Coverage Report

Created: 2026-04-10 06:41

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
195
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
24
195
  if (size < 24) {
25
8
    return 0;
26
8
  }
27
187
  char *opt_fuzz = malloc(24);
28
29
187
  memcpy(opt_fuzz, data, 23);
30
187
  opt_fuzz[23] = 0;
31
187
  data += 23;
32
187
  size -= 23;
33
34
187
  char *new_str = (char *)malloc(size + 1);
35
187
  if (new_str == NULL) {
36
0
    return 0;
37
0
  }
38
187
  memcpy(new_str, data, size);
39
187
  new_str[size] = '\0';
40
187
  my_argv[0] = "/tmp/fuzz/";
41
187
  my_argv[1] = opt_fuzz;
42
187
  my_argv[2] = new_str;
43
187
  my_argv[3] = NULL;
44
45
187
  scanopt_t sopt;
46
187
  sopt = scanopt_init(flexopts, 3, my_argv, 0);
47
187
  if (!sopt) {
48
0
    free(new_str);
49
0
    free(opt_fuzz);
50
0
    return 0;
51
0
  }
52
187
  int optind;
53
187
  char *arg;
54
187
  scanopt(sopt, &arg, &optind);
55
187
  scanopt_destroy(sopt);
56
57
187
  free(new_str);
58
187
  free(opt_fuzz);
59
187
  return 0;
60
187
}