// buggy.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void copy_input(const char *input) {
char *buffer
= (char *)malloc(100); strcpy(buffer
, input
); // Possible overflow printf("Copied: %s\n", buffer
); }
void call_uninit() {
strcpy(p
, "Danger!"); // Using uninitialized pointer }
int main() {
copy_input("This input is too long for the buffer!");
call_uninit();
strcpy(leak
, "Memory not freed"); // Leak here
return 0;
}
Ly8gYnVnZ3kuYwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+Cgp2b2lkIGNvcHlfaW5wdXQoY29uc3QgY2hhciAqaW5wdXQpIHsKICAgIGNoYXIgKmJ1ZmZlciA9IChjaGFyICopbWFsbG9jKDEwMCk7CiAgICBzdHJjcHkoYnVmZmVyLCBpbnB1dCk7ICAvLyBQb3NzaWJsZSBvdmVyZmxvdwogICAgcHJpbnRmKCJDb3BpZWQ6ICVzXG4iLCBidWZmZXIpOwogICAgZnJlZShidWZmZXIpOwp9Cgp2b2lkIGNhbGxfdW5pbml0KCkgewogICAgY2hhciAqcD1tYWxsb2MoMTAwKTsKICAgIHN0cmNweShwLCAiRGFuZ2VyISIpOyAgLy8gVXNpbmcgdW5pbml0aWFsaXplZCBwb2ludGVyCn0KCmludCBtYWluKCkgewogICAgY29weV9pbnB1dCgiVGhpcyBpbnB1dCBpcyB0b28gbG9uZyBmb3IgdGhlIGJ1ZmZlciEiKTsKICAgIGNhbGxfdW5pbml0KCk7CgogICAgY2hhciAqbGVhayA9IG1hbGxvYygxMDApOwogICAgc3RyY3B5KGxlYWssICJNZW1vcnkgbm90IGZyZWVkIik7ICAvLyBMZWFrIGhlcmUKCiAgICByZXR1cm4gMDsKfQo=