-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #187 from boostorg/fuzz
Add fuzzing to `to_chars` for floats
- Loading branch information
Showing
14 changed files
with
1,123 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
// Copyright 2024 Matt Borland | ||
// Distributed under the Boost Software License, Version 1.0. | ||
// https://www.boost.org/LICENSE_1_0.txt | ||
|
||
#include <boost/charconv.hpp> | ||
#include <boost/core/detail/string_view.hpp> | ||
#include <iostream> | ||
#include <exception> | ||
|
||
extern "C" int LLVMFuzzerTestOneInput(const std::uint8_t* data, std::size_t size) | ||
{ | ||
try | ||
{ | ||
auto c_data = reinterpret_cast<const char*>(data); | ||
|
||
const auto formats = {boost::charconv::chars_format::general, | ||
boost::charconv::chars_format::fixed, | ||
boost::charconv::chars_format::scientific, | ||
boost::charconv::chars_format::hex}; | ||
|
||
for (const auto format : formats) | ||
{ | ||
char buffer[20]; // Small enough it should encounter overflows | ||
|
||
float f_val {}; | ||
boost::charconv::from_chars(c_data, c_data + size, f_val, format); | ||
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), f_val, format); | ||
|
||
double val {}; | ||
boost::charconv::from_chars(c_data, c_data + size, val, format); | ||
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), val, format); | ||
|
||
#if BOOST_CHARCONV_LDBL_BITS == 64 | ||
long double ld_val {}; | ||
boost::charconv::from_chars(c_data, c_data + size, ld_val, format); | ||
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), ld_val, format); | ||
#endif | ||
|
||
// Also try with precisions | ||
for (int precision = -1; precision < 10; ++precision) | ||
{ | ||
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), f_val, format, precision); | ||
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), val, format, precision); | ||
#if BOOST_CHARCONV_LDBL_BITS == 64 | ||
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), ld_val, format, precision); | ||
#endif | ||
} | ||
} | ||
} | ||
catch(...) | ||
{ | ||
std::cerr << "Error with: " << data << std::endl; | ||
std::terminate(); | ||
} | ||
|
||
return 0; | ||
} |
1 change: 1 addition & 0 deletions
1
fuzzing/old_crashes/fuzz_to_chars_float/crash-09c8b86a9193e576c2b40b72af22cf35dabd240b
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
BBBBB���BBBBBBBB��������BBBBBB� |
1 change: 1 addition & 0 deletions
1
fuzzing/old_crashes/fuzz_to_chars_float/crash-09cd68a2a77b22a312dded612dd0d9988685189f
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
es |
1 change: 1 addition & 0 deletions
1
fuzzing/old_crashes/fuzz_to_chars_float/crash-10a020de5380904a3affe37886c7c20196fd5acd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
1999009 |
1 change: 1 addition & 0 deletions
1
fuzzing/old_crashes/fuzz_to_chars_float/crash-285945accb992ef55b4a3413e89e2012e2f43aa7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
333333333333333� |
Binary file added
BIN
+13 Bytes
fuzzing/old_crashes/fuzz_to_chars_float/crash-62779dca0df8805bfe97854acd6e6098ba0fafa4
Binary file not shown.
Binary file added
BIN
+127 Bytes
fuzzing/old_crashes/fuzz_to_chars_float/crash-6a4de55d3b0eae16918d958d54a0ad29dbe5c888
Binary file not shown.
1 change: 1 addition & 0 deletions
1
fuzzing/old_crashes/fuzz_to_chars_float/crash-a005df23eaa03d6a4009401ca46e71c068741754
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
111111111111111!1111111111111111111[� |
1 change: 1 addition & 0 deletions
1
fuzzing/old_crashes/fuzz_to_chars_float/crash-ee9bf16bb7c75a0dc9e898ceb5f713f9ba471e77
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
3333;;33 |
1 change: 1 addition & 0 deletions
1
fuzzing/old_crashes/fuzz_to_chars_float/crash-fff9981a80eb8a852ac0e8e7387f23a43d5cf76a
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
66666666666666666666;; |
Oops, something went wrong.