/src/poco/Foundation/fuzzing/DateTimeParse.cpp
Line | Count | Source |
1 | | #include "Poco/DateTimeParser.h" |
2 | | #include "Poco/DateTimeFormat.h" |
3 | | #include "Poco/DateTimeFormatter.h" |
4 | | |
5 | | using namespace Poco; |
6 | | |
7 | | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) |
8 | 1.97k | { |
9 | 1.97k | const std::string input(reinterpret_cast<const char*>(data), size); |
10 | | |
11 | 1.97k | const std::string formats[] = { |
12 | 1.97k | DateTimeFormat::ISO8601_FORMAT, |
13 | 1.97k | DateTimeFormat::ISO8601_FRAC_FORMAT, |
14 | 1.97k | DateTimeFormat::RFC822_FORMAT, |
15 | 1.97k | DateTimeFormat::RFC1123_FORMAT, |
16 | 1.97k | DateTimeFormat::HTTP_FORMAT, |
17 | 1.97k | DateTimeFormat::RFC850_FORMAT, |
18 | 1.97k | DateTimeFormat::RFC1036_FORMAT, |
19 | 1.97k | DateTimeFormat::ASCTIME_FORMAT, |
20 | 1.97k | DateTimeFormat::SORTABLE_FORMAT, |
21 | 1.97k | "%m/%d/%y %h:%M %a", |
22 | 1.97k | "T%H:%M:%F", |
23 | 1.97k | }; |
24 | | |
25 | 1.97k | int tzd = 0; |
26 | 1.97k | DateTime dt; |
27 | | |
28 | 1.97k | for (const auto& format : formats) |
29 | 21.6k | { |
30 | 21.6k | DateTimeParser::tryParse(format, input, dt, tzd); |
31 | 21.6k | DateTimeFormatter::format(dt.timestamp(), format, tzd); |
32 | 21.6k | } |
33 | | |
34 | 1.97k | try { dt.makeLocal(tzd); } catch (const std::exception&) {} |
35 | 1.97k | try { dt.makeUTC(tzd); } catch (const std::exception&) {} |
36 | | |
37 | 1.97k | try |
38 | 1.97k | { |
39 | 1.97k | dt = DateTimeParser::parse(input, tzd); |
40 | 1.97k | } |
41 | 1.97k | catch (const std::exception&) |
42 | 1.97k | { |
43 | 1.67k | } |
44 | | |
45 | 1.97k | return 0; |
46 | 1.97k | } |