Rizin
unix-like reverse engineering framework and cli tools
onefile.c
Go to the documentation of this file.
1 #include <stdint.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 
5 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
6 
7 int main(int argc, char** argv)
8 {
9  FILE * fp;
10  uint8_t *Data;
11  size_t Size;
12 
13  if (argc != 2) {
14  return 1;
15  }
16  //opens the file, get its size, and reads it into a buffer
17  fp = fopen(argv[1], "rb");
18  if (fp == NULL) {
19  return 2;
20  }
21  if (fseek(fp, 0L, SEEK_END) != 0) {
22  fclose(fp);
23  return 2;
24  }
25  Size = ftell(fp);
26  if (Size == (size_t) -1) {
27  fclose(fp);
28  return 2;
29  }
30  if (fseek(fp, 0L, SEEK_SET) != 0) {
31  fclose(fp);
32  return 2;
33  }
34  Data = malloc(Size);
35  if (Data == NULL) {
36  fclose(fp);
37  return 2;
38  }
39  if (fread(Data, Size, 1, fp) != 1) {
40  fclose(fp);
41  free(Data);
42  return 2;
43  }
44 
45  //lauch fuzzer
46  LLVMFuzzerTestOneInput(Data, Size);
47  free(Data);
48  fclose(fp);
49  return 0;
50 }
51 
#define NULL
Definition: cris-opc.c:27
RZ_API void Ht_() free(HtName_(Ht) *ht)
Definition: ht_inc.c:130
void * malloc(size_t size)
Definition: malloc.c:123
static static fork const void static count static fd const char const char static newpath char char argv
Definition: sflib.h:40
string FILE
Definition: benchmark.py:21
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
Definition: fuzz_diff.c:180
int main(int argc, char **argv)
Definition: onefile.c:7
unsigned char uint8_t
Definition: sftypes.h:31
#define SEEK_SET
Definition: zip.c:88
#define SEEK_END
Definition: zip.c:84
#define L
Definition: zip_err_str.c:7