quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

onefile.c (1771B)


      1 #include <stdint.h>
      2 #include <stdlib.h>
      3 #include <stdio.h>
      4 #include "common.h"
      5 
      6 /* This file doesn't use any Mbed TLS function, but grab mbedtls_config.h anyway
      7  * in case it contains platform-specific #defines related to malloc or
      8  * stdio functions. */
      9 #include "mbedtls/build_info.h"
     10 
     11 int main(int argc, char **argv)
     12 {
     13     FILE *fp;
     14     uint8_t *Data;
     15     size_t Size;
     16     const char *argv0 = argv[0] == NULL ? "PROGRAM_NAME" : argv[0];
     17 
     18     if (argc != 2) {
     19         fprintf(stderr, "Usage: %s REPRODUCER_FILE\n", argv0);
     20         return 1;
     21     }
     22     //opens the file, get its size, and reads it into a buffer
     23     fp = fopen(argv[1], "rb");
     24     if (fp == NULL) {
     25         fprintf(stderr, "%s: Error in fopen\n", argv0);
     26         perror(argv[1]);
     27         return 2;
     28     }
     29     if (fseek(fp, 0L, SEEK_END) != 0) {
     30         fprintf(stderr, "%s: Error in fseek(SEEK_END)\n", argv0);
     31         perror(argv[1]);
     32         fclose(fp);
     33         return 2;
     34     }
     35     Size = ftell(fp);
     36     if (Size == (size_t) -1) {
     37         fprintf(stderr, "%s: Error in ftell\n", argv0);
     38         perror(argv[1]);
     39         fclose(fp);
     40         return 2;
     41     }
     42     if (fseek(fp, 0L, SEEK_SET) != 0) {
     43         fprintf(stderr, "%s: Error in fseek(0)\n", argv0);
     44         perror(argv[1]);
     45         fclose(fp);
     46         return 2;
     47     }
     48     Data = malloc(Size);
     49     if (Data == NULL) {
     50         fprintf(stderr, "%s: Could not allocate memory\n", argv0);
     51         perror(argv[1]);
     52         fclose(fp);
     53         return 2;
     54     }
     55     if (fread(Data, Size, 1, fp) != 1) {
     56         fprintf(stderr, "%s: Error in fread\n", argv0);
     57         perror(argv[1]);
     58         free(Data);
     59         fclose(fp);
     60         return 2;
     61     }
     62 
     63     //launch fuzzer
     64     LLVMFuzzerTestOneInput(Data, Size);
     65     free(Data);
     66     fclose(fp);
     67     return 0;
     68 }