Coverage Report

Created: 2026-01-13 06:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/mercurial/contrib/fuzz/bdiff.cc
Line
Count
Source
1
/*
2
 * bdiff.cc - fuzzer harness for bdiff.c
3
 *
4
 * Copyright 2018, Google Inc.
5
 *
6
 * This software may be used and distributed according to the terms of
7
 * the GNU General Public License, incorporated herein by reference.
8
 */
9
#include <memory>
10
#include <stdlib.h>
11
12
#include "FuzzedDataProvider.h"
13
14
extern "C" {
15
#include "bdiff.h"
16
17
extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv)
18
16
{
19
16
  return 0;
20
16
}
21
22
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
23
1.61k
{
24
1.61k
  FuzzedDataProvider provider(Data, Size);
25
1.61k
  std::string left = provider.ConsumeRandomLengthString(Size);
26
1.61k
  std::string right = provider.ConsumeRemainingBytesAsString();
27
28
1.61k
  struct bdiff_line *a, *b;
29
1.61k
  int an = bdiff_splitlines(left.c_str(), left.size(), &a);
30
1.61k
  int bn = bdiff_splitlines(right.c_str(), right.size(), &b);
31
1.61k
  struct bdiff_hunk l;
32
1.61k
  bdiff_diff(a, an, b, bn, &l);
33
1.61k
  free(a);
34
1.61k
  free(b);
35
1.61k
  bdiff_freehunks(l.next);
36
1.61k
  return 0; // Non-zero return values are reserved for future use.
37
1.61k
}
38
39
} // extern "C"