Updated fuzzer to support multiple in from_ical

pull/581/head
bcapuano 2023-11-04 12:05:43 -04:00
rodzic 23998f0d03
commit 38785144da
2 zmienionych plików z 16 dodań i 7 usunięć

Wyświetl plik

@ -6,7 +6,7 @@ Changelog
Minor changes:
- ...
- Augmented fuzzer to optionally convert multiple calendars from a source string
Breaking changes:

Wyświetl plik

@ -28,19 +28,28 @@ _value_error_matches = [
]
def _fuzz_calendar(cal: icalendar.Calendar, should_walk: bool):
if should_walk:
for event in cal.walk('VEVENT'):
event.to_ical()
else:
cal.to_ical()
@atheris.instrument_func
def TestOneInput(data):
fdp = atheris.FuzzedDataProvider(data)
try:
b = fdp.ConsumeBool()
multiple = fdp.ConsumeBool()
should_walk = fdp.ConsumeBool()
cal = icalendar.Calendar.from_ical(fdp.ConsumeString(fdp.remaining_bytes()))
cal = icalendar.Calendar.from_ical(fdp.ConsumeString(fdp.remaining_bytes()), multiple=multiple)
if b:
for event in cal.walk('VEVENT'):
event.to_ical().decode('utf-8')
if multiple:
for c in cal:
_fuzz_calendar(c, should_walk)
else:
cal.to_ical()
_fuzz_calendar(cal, should_walk)
except ValueError as e:
if any(m in str(e) for m in _value_error_matches):
return -1