Coverage Report

Created: 2025-11-16 06:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/samba/lib/fuzzing/fuzz_oLschema2ldif.c
Line
Count
Source
1
/*
2
   Fuzzing for oLschema2ldif
3
   Copyright (C) Michael Hanselmann 2019
4
5
   This program is free software; you can redistribute it and/or modify
6
   it under the terms of the GNU General Public License as published by
7
   the Free Software Foundation; either version 3 of the License, or
8
   (at your option) any later version.
9
10
   This program is distributed in the hope that it will be useful,
11
   but WITHOUT ANY WARRANTY; without even the implied warranty of
12
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
   GNU General Public License for more details.
14
15
   You should have received a copy of the GNU General Public License
16
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
#include "includes.h"
20
#include "fuzzing.h"
21
#include "utils/oLschema2ldif/lib.h"
22
23
static FILE *devnull;
24
25
int LLVMFuzzerInitialize(int *argc, char ***argv)
26
376
{
27
376
  devnull = fopen("/dev/null", "w");
28
29
376
  return 0;
30
376
}
31
32
int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len)
33
23
{
34
23
  TALLOC_CTX *mem_ctx;
35
23
  struct conv_options opt;
36
37
23
  if (len == 0) {
38
    /*
39
     * Otherwise fmemopen() will return null and set errno
40
     * to EINVAL
41
     */
42
0
    return 0;
43
0
  }
44
45
23
  mem_ctx = talloc_init(__FUNCTION__);
46
23
  if (mem_ctx == NULL) {
47
0
    return 0;
48
0
  }
49
50
23
  opt.in = fmemopen(buf, len, "r");
51
23
  opt.out = devnull;
52
23
  opt.ldb_ctx = ldb_init(mem_ctx, NULL);
53
23
  if (opt.ldb_ctx == NULL || opt.in == NULL) {
54
23
    talloc_free(mem_ctx);
55
23
    return 0;
56
23
  }
57
58
0
  opt.basedn = ldb_dn_new(mem_ctx, opt.ldb_ctx, "");
59
0
  if (opt.basedn == NULL) {
60
0
    talloc_free(mem_ctx);
61
0
    return 0;
62
0
  }
63
64
0
  process_file(mem_ctx, &opt);
65
66
0
  fclose(opt.in);
67
68
0
  talloc_free(mem_ctx);
69
70
0
  return 0;
71
0
}