Coverage Report

Created: 2025-10-10 06:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/fuzz-scanopt.c
Line
Count
Source
1
/* Copyright 2023 Google LLC
2
Licensed under the Apache License, Version 2.0 (the "License");
3
you may not use this file except in compliance with the License.
4
You may obtain a copy of the License at
5
      http://www.apache.org/licenses/LICENSE-2.0
6
Unless required by applicable law or agreed to in writing, software
7
distributed under the License is distributed on an "AS IS" BASIS,
8
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
See the License for the specific language governing permissions and
10
limitations under the License.
11
*/
12
13
#include <stdint.h>
14
#include <stdlib.h>
15
#include <string.h>
16
17
#include "flexdef.h"
18
#include "options.h"
19
#include "scanopt.h"
20
21
char *my_argv[4];
22
23
182
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
24
182
  if (size < 24) {
25
8
    return 0;
26
8
  }
27
174
  char *opt_fuzz = malloc(24);
28
29
174
  memcpy(opt_fuzz, data, 23);
30
174
  opt_fuzz[23] = 0;
31
174
  data += 23;
32
174
  size -= 23;
33
34
174
  char *new_str = (char *)malloc(size + 1);
35
174
  if (new_str == NULL) {
36
0
    return 0;
37
0
  }
38
174
  memcpy(new_str, data, size);
39
174
  new_str[size] = '\0';
40
174
  my_argv[0] = "/tmp/fuzz/";
41
174
  my_argv[1] = opt_fuzz;
42
174
  my_argv[2] = new_str;
43
174
  my_argv[3] = NULL;
44
45
174
  scanopt_t sopt;
46
174
  sopt = scanopt_init(flexopts, 3, my_argv, 0);
47
174
  if (!sopt) {
48
0
    free(new_str);
49
0
    free(opt_fuzz);
50
0
    return 0;
51
0
  }
52
174
  int optind;
53
174
  char *arg;
54
174
  scanopt(sopt, &arg, &optind);
55
174
  scanopt_destroy(sopt);
56
57
174
  free(new_str);
58
174
  free(opt_fuzz);
59
174
  return 0;
60
174
}