MCPcopy Create free account
hub / github.com/git/git / LLVMFuzzerTestOneInput

Function LLVMFuzzerTestOneInput

oss-fuzz/fuzz-date.c:6–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
5
6int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
7{
8 int local;
9 int num;
10 char *str;
11 int16_t tz;
12 timestamp_t ts;
13 enum date_mode_type dmtype;
14 struct date_mode dm;
15
16 if (size <= 4)
17 /*
18 * we use the first byte to fuzz dmtype and the
19 * second byte to fuzz local, then the next two
20 * bytes to fuzz tz offset. The remainder
21 * (at least one byte) is fed as input to
22 * approxidate_careful().
23 */
24 return 0;
25
26 local = !!(*data++ & 0x10);
27 num = *data++ % DATE_UNIX;
28 if (num >= DATE_STRFTIME)
29 num++;
30 dmtype = (enum date_mode_type)num;
31 size -= 2;
32
33 tz = *data++;
34 tz = (tz << 8) | *data++;
35 size -= 2;
36
37 str = xmemdupz(data, size);
38
39 ts = approxidate_careful(str, &num);
40 free(str);
41
42 dm = date_mode_from_type(dmtype);
43 dm.local = local;
44 show_date(ts, (int)tz, dm);
45
46 date_mode_release(&dm);
47
48 return 0;
49}

Callers

nothing calls this directly

Calls 5

xmemdupzFunction · 0.85
approxidate_carefulFunction · 0.85
date_mode_from_typeFunction · 0.85
show_dateFunction · 0.85
date_mode_releaseFunction · 0.85

Tested by

no test coverage detected