git

Форк
0
/
fuzz-date.c 
49 строк · 947.0 Байт
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
}
50

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.