diff --git a/include/fmt/format-inl.h b/include/fmt/format-inl.h index 0f080386..9cb36273 100644 --- a/include/fmt/format-inl.h +++ b/include/fmt/format-inl.h @@ -1151,7 +1151,7 @@ int snprintf_float(T value, int precision, float_specs specs, for (;;) { auto begin = buf.data() + offset; auto capacity = buf.capacity() - offset; -#ifdef FUZZ_MODE +#ifdef FMT_FUZZ if (precision > 100000) throw std::runtime_error( "fuzz mode - avoid large allocation inside snprintf"); diff --git a/include/fmt/format.h b/include/fmt/format.h index d28e4295..20433d1b 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -699,7 +699,7 @@ class basic_memory_buffer : public internal::buffer { template void basic_memory_buffer::grow(std::size_t size) { -#ifdef FUZZ_MODE +#ifdef FMT_FUZZ if (size > 1000) throw std::runtime_error("fuzz mode - won't grow that much"); #endif std::size_t old_capacity = this->capacity(); @@ -1136,7 +1136,7 @@ template class float_writer { *it++ = static_cast('0'); return it; } -#ifdef FUZZ_MODE +#ifdef FMT_FUZZ if (num_zeros > 1000) throw std::runtime_error("fuzz mode - avoiding excessive cpu use"); #endif diff --git a/src/format.cc b/src/format.cc index d9ca9134..e6849b93 100644 --- a/src/format.cc +++ b/src/format.cc @@ -13,7 +13,7 @@ namespace internal { template int format_float(char* buf, std::size_t size, const char* format, int precision, T value) { -#ifdef FUZZ_MODE +#ifdef FMT_FUZZ if (precision > 100000) throw std::runtime_error( "fuzz mode - avoid large allocation inside snprintf"); diff --git a/test/fuzzing/README.md b/test/fuzzing/README.md index b3f1829f..8f7a4536 100644 --- a/test/fuzzing/README.md +++ b/test/fuzzing/README.md @@ -7,13 +7,13 @@ in fmt. It is a part of the continous fuzzing at The source code is modified to make the fuzzing possible without locking up on resource exhaustion: ```cpp -#ifdef FUZZ_MODE +#ifdef FMT_FUZZ if(spec.precision>100000) { throw std::runtime_error("fuzz mode - avoiding large precision"); } #endif ``` -This macro `FUZZ_MODE` is enabled on OSS-Fuzz builds and makes fuzzing +This macro `FMT_FUZZ` is enabled on OSS-Fuzz builds and makes fuzzing practically possible. It is used in fmt code to prevent resource exhaustion in fuzzing mode. The macro `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION` is the