Fix bug found by fuzzing
This commit is contained in:
parent
6a0f6ff708
commit
5dc570cc0e
@ -706,6 +706,7 @@ FMT_CONSTEXPR const Char* parse_chrono_format(const Char* begin,
|
||||
}
|
||||
if (begin != ptr) handler.on_text(begin, ptr);
|
||||
c = *++ptr; // consume '%'
|
||||
if (ptr == end) FMT_THROW(format_error("invalid format"));
|
||||
switch (c) {
|
||||
case '_':
|
||||
pad = pad_type::space;
|
||||
|
||||
@ -921,6 +921,13 @@ TEST(chrono_test, timestamps_sub_seconds) {
|
||||
}
|
||||
|
||||
TEST(chrono_test, glibc_extensions) {
|
||||
EXPECT_THROW_MSG((void)fmt::format(runtime("{:%0}"), std::chrono::seconds()),
|
||||
fmt::format_error, "invalid format");
|
||||
EXPECT_THROW_MSG((void)fmt::format(runtime("{:%_}"), std::chrono::seconds()),
|
||||
fmt::format_error, "invalid format");
|
||||
EXPECT_THROW_MSG((void)fmt::format(runtime("{:%-}"), std::chrono::seconds()),
|
||||
fmt::format_error, "invalid format");
|
||||
|
||||
{
|
||||
const auto d = std::chrono::hours(1) + std::chrono::minutes(2) +
|
||||
std::chrono::seconds(3);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user