add write-after-free tests with potential reuse
parent
5fa6e01929
commit
57d5ab769b
|
@ -8,7 +8,9 @@ EXECUTABLES := \
|
|||
read_after_free_large \
|
||||
read_after_free_small \
|
||||
write_after_free_large \
|
||||
write_after_free_large_reuse \
|
||||
write_after_free_small \
|
||||
write_after_free_small_reuse \
|
||||
read_zero_size \
|
||||
write_zero_size \
|
||||
invalid_free_protected \
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
__attribute__((optimize(0)))
|
||||
int main(void) {
|
||||
char *p = malloc(128 * 1024);
|
||||
if (!p) {
|
||||
return 1;
|
||||
}
|
||||
free(p);
|
||||
char *q = malloc(128 * 1024);
|
||||
p[64 * 1024 + 1] = 'a';
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
__attribute__((optimize(0)))
|
||||
int main(void) {
|
||||
char *p = malloc(128);
|
||||
if (!p) {
|
||||
return 1;
|
||||
}
|
||||
free(p);
|
||||
char *q = malloc(128);
|
||||
|
||||
p[65] = 'a';
|
||||
|
||||
// trigger reuse of the allocation
|
||||
for (size_t i = 0; i < 100000; i++) {
|
||||
free(malloc(128));
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue