-
Notifications
You must be signed in to change notification settings - Fork 6
/
use_after_free.c
37 lines (33 loc) · 1.11 KB
/
use_after_free.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* This software was developed at the National Institute of Standards and
* Technology by employees of the Federal Government in the course of their
* official duties. Pursuant to title 17 Section 105 of the United States
* Code this software is not subject to copyright protection and is in the
* public domain. NIST assumes no responsibility whatsoever for its use by
* other parties, and makes no guarantees, expressed or implied, about its
* quality, reliability, or any other characteristic.
* We would appreciate acknowledgement if the software is used.
* The SAMATE project website is: http://samate.nist.gov
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct str_t str;
struct str_t {
union {
int a;
char *b;
} foo;
};
int main(int argc, char *argv[]) {
str container;
container.foo.a = 0;
if ((container.foo.b = (char *)malloc(256 * sizeof(char))) != NULL) {
strcpy(container.foo.b, "Falut!");
container.foo.b[0] = 'S';
printf("%s\n", container.foo.b);
free(container.foo.b);
if (container.foo.b)
container.foo.b[0] = 'S';
}
return 0;
}