File tree Expand file tree Collapse file tree 3 files changed +51
-0
lines changed Expand file tree Collapse file tree 3 files changed +51
-0
lines changed Original file line number Diff line number Diff line change @@ -753,6 +753,7 @@ SCRIPTS = $(SCRIPT_SH_GEN) \
753
753
ETAGS_TARGET = TAGS
754
754
755
755
FUZZ_OBJS += oss-fuzz/fuzz-commit-graph.o
756
+ FUZZ_OBJS += oss-fuzz/fuzz-date.o
756
757
FUZZ_OBJS += oss-fuzz/fuzz-pack-headers.o
757
758
FUZZ_OBJS += oss-fuzz/fuzz-pack-idx.o
758
759
.PHONY : fuzz-objs
Original file line number Diff line number Diff line change 1
1
fuzz-commit-graph
2
+ fuzz-date
2
3
fuzz-pack-headers
3
4
fuzz-pack-idx
Original file line number Diff line number Diff line change
1
+ #include "git-compat-util.h"
2
+ #include "date.h"
3
+
4
+ int LLVMFuzzerTestOneInput (const uint8_t * data , size_t size );
5
+
6
+ int 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
+ }
You can’t perform that action at this time.
0 commit comments