xref: /aosp_15_r20/external/libsrtp2/fuzzer/testmem.c (revision 90e502c7aef8d77d0622bb67d75435c6190cfc1a)
1*90e502c7SAndroid Build Coastguard Worker #include <stdint.h>
2*90e502c7SAndroid Build Coastguard Worker #include <stddef.h>
3*90e502c7SAndroid Build Coastguard Worker #include <stdlib.h>
4*90e502c7SAndroid Build Coastguard Worker #include <string.h>
5*90e502c7SAndroid Build Coastguard Worker 
6*90e502c7SAndroid Build Coastguard Worker #ifdef FUZZ_MSAN
7*90e502c7SAndroid Build Coastguard Worker #include <stdio.h>
fuzz_testmem_msan(void * data,size_t size)8*90e502c7SAndroid Build Coastguard Worker static void fuzz_testmem_msan(void *data, size_t size)
9*90e502c7SAndroid Build Coastguard Worker {
10*90e502c7SAndroid Build Coastguard Worker     /* This is a trick to force MemorySanitizer to evaluate the data at hand */
11*90e502c7SAndroid Build Coastguard Worker     FILE *fp = fopen("/dev/null", "wb");
12*90e502c7SAndroid Build Coastguard Worker     fwrite(data, size, 1, fp);
13*90e502c7SAndroid Build Coastguard Worker     fclose(fp);
14*90e502c7SAndroid Build Coastguard Worker }
15*90e502c7SAndroid Build Coastguard Worker #endif
16*90e502c7SAndroid Build Coastguard Worker 
fuzz_testmem(void * data,size_t size)17*90e502c7SAndroid Build Coastguard Worker void fuzz_testmem(void *data, size_t size)
18*90e502c7SAndroid Build Coastguard Worker {
19*90e502c7SAndroid Build Coastguard Worker #ifdef FUZZ_MSAN
20*90e502c7SAndroid Build Coastguard Worker     fuzz_testmem_msan(data, size);
21*90e502c7SAndroid Build Coastguard Worker #endif
22*90e502c7SAndroid Build Coastguard Worker     uint8_t *copy = malloc(size);
23*90e502c7SAndroid Build Coastguard Worker     memcpy(copy, data, size);
24*90e502c7SAndroid Build Coastguard Worker     free(copy);
25*90e502c7SAndroid Build Coastguard Worker }
26