AFL Code/libFuzzer Code quick copy



int main(int argc, char** argv)
{

    if(argc>1){

	    FILE *f = fopen(argv[1], "rb");
	    fseek(f, 0, SEEK_END);
	    size_t fsize = ftell(f);
	    rewind(f);

	    uint8_t* str = (uint8_t *)malloc(fsize + 1);
	    memset(str, 0, fsize + 1);
	    fread((void*)str, fsize, 1, f);
	    fclose(f);
	    LLVMFuzzerTestOneInput(str, fsize + 1);

	    free(str);
    	    str = (uint8_t*)0;
    }
    else {
 	   uint8_t* str = (uint8_t *)malloc(4096);
           memset(str, 0, 4096);
           fgets((char*)str, 4095, stdin);

           LLVMFuzzerTestOneInput(str, 4096);

	   free(str);
	  str = (uint8_t*)0;
    }
   return 0;

}

===========

clang++ -g -fsanitize=fuzzer,address,undefined -fsanitize-coverage=trace-pc-guard FTS/tutorial/fuzz_me.cc libFuzzer.a

extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
DoSomethingWithData(data, size);
return 0;
}
Friday, March 22, 2019 by blast