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