1*08b48e0bSAndroid Build Coastguard Worker #include <stdio.h> 2*08b48e0bSAndroid Build Coastguard Worker #include <string.h> 3*08b48e0bSAndroid Build Coastguard Worker #include <stdint.h> 4*08b48e0bSAndroid Build Coastguard Worker #include <stdarg.h> 5*08b48e0bSAndroid Build Coastguard Worker #include <stdlib.h> 6*08b48e0bSAndroid Build Coastguard Worker #include <stdint.h> 7*08b48e0bSAndroid Build Coastguard Worker #include <unistd.h> 8*08b48e0bSAndroid Build Coastguard Worker LLVMFuzzerTestOneInput(const uint8_t * buf,size_t i)9*08b48e0bSAndroid Build Coastguard Workerint LLVMFuzzerTestOneInput(const uint8_t *buf, size_t i) { 10*08b48e0bSAndroid Build Coastguard Worker 11*08b48e0bSAndroid Build Coastguard Worker if (i < 15) return -1; 12*08b48e0bSAndroid Build Coastguard Worker if (buf[0] != 'A') return 0; 13*08b48e0bSAndroid Build Coastguard Worker if (buf[1] != 'B') return 0; 14*08b48e0bSAndroid Build Coastguard Worker if (buf[2] != 'C') return 0; 15*08b48e0bSAndroid Build Coastguard Worker if (buf[3] != 'D') return 0; 16*08b48e0bSAndroid Build Coastguard Worker int *icmp = (int *)(buf + 4); 17*08b48e0bSAndroid Build Coastguard Worker if (*icmp != 0x69694141) return 0; 18*08b48e0bSAndroid Build Coastguard Worker if (memcmp(buf + 8, "1234EF", 6) == 0) abort(); 19*08b48e0bSAndroid Build Coastguard Worker return 0; 20*08b48e0bSAndroid Build Coastguard Worker 21*08b48e0bSAndroid Build Coastguard Worker } 22*08b48e0bSAndroid Build Coastguard Worker 23*08b48e0bSAndroid Build Coastguard Worker #ifdef __AFL_COMPILER main(int argc,char * argv[])24*08b48e0bSAndroid Build Coastguard Workerint main(int argc, char *argv[]) { 25*08b48e0bSAndroid Build Coastguard Worker 26*08b48e0bSAndroid Build Coastguard Worker unsigned char buf[1024]; 27*08b48e0bSAndroid Build Coastguard Worker ssize_t i; 28*08b48e0bSAndroid Build Coastguard Worker while (__AFL_LOOP(1000)) { 29*08b48e0bSAndroid Build Coastguard Worker 30*08b48e0bSAndroid Build Coastguard Worker i = read(0, (char *)buf, sizeof(buf) - 1); 31*08b48e0bSAndroid Build Coastguard Worker if (i > 0) buf[i] = 0; 32*08b48e0bSAndroid Build Coastguard Worker LLVMFuzzerTestOneInput(buf, i); 33*08b48e0bSAndroid Build Coastguard Worker 34*08b48e0bSAndroid Build Coastguard Worker } 35*08b48e0bSAndroid Build Coastguard Worker 36*08b48e0bSAndroid Build Coastguard Worker return 0; 37*08b48e0bSAndroid Build Coastguard Worker 38*08b48e0bSAndroid Build Coastguard Worker } 39*08b48e0bSAndroid Build Coastguard Worker 40*08b48e0bSAndroid Build Coastguard Worker #endif 41*08b48e0bSAndroid Build Coastguard Worker 42