mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2024-12-13 10:22:55 +01:00
Fix fuzzer off by one error (#1047)
* Fix fuzzer off by one error Currently the fuzzer has an off by one error, as it passing a bad length to the CharReader::parse method, resulting in a heap buffer overflow. * Rebase master, rerun clang format
This commit is contained in:
parent
ddc0748c4f
commit
2e33c218cb
@ -2,8 +2,8 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
/**
|
/**
|
||||||
* \brief Parse a raw string into Value object using the CharReaderBuilder
|
* \brief Parse a raw string into Value object using the CharReaderBuilder
|
||||||
* class, or the legacy Reader class.
|
* class, or the legacy Reader class.
|
||||||
* Example Usage:
|
* Example Usage:
|
||||||
* $g++ readFromString.cpp -ljsoncpp -std=c++11 -o readFromString
|
* $g++ readFromString.cpp -ljsoncpp -std=c++11 -o readFromString
|
||||||
* $./readFromString
|
* $./readFromString
|
||||||
* colin
|
* colin
|
||||||
|
@ -210,7 +210,9 @@ LogicError::LogicError(String const& msg) : Exception(msg) {}
|
|||||||
JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
|
JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
|
||||||
throw RuntimeError(msg);
|
throw RuntimeError(msg);
|
||||||
}
|
}
|
||||||
JSONCPP_NORETURN void throwLogicError(String const& msg) { throw LogicError(msg); }
|
JSONCPP_NORETURN void throwLogicError(String const& msg) {
|
||||||
|
throw LogicError(msg);
|
||||||
|
}
|
||||||
#else // !JSON_USE_EXCEPTION
|
#else // !JSON_USE_EXCEPTION
|
||||||
JSONCPP_NORETURN void throwRuntimeError(String const& msg) { abort(); }
|
JSONCPP_NORETURN void throwRuntimeError(String const& msg) { abort(); }
|
||||||
JSONCPP_NORETURN void throwLogicError(String const& msg) { abort(); }
|
JSONCPP_NORETURN void throwLogicError(String const& msg) { abort(); }
|
||||||
|
@ -25,6 +25,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
|||||||
|
|
||||||
uint32_t hash_settings = *(const uint32_t*)data;
|
uint32_t hash_settings = *(const uint32_t*)data;
|
||||||
data += sizeof(uint32_t);
|
data += sizeof(uint32_t);
|
||||||
|
size -= sizeof(uint32_t);
|
||||||
|
|
||||||
builder.settings_["failIfExtra"] = hash_settings & (1 << 0);
|
builder.settings_["failIfExtra"] = hash_settings & (1 << 0);
|
||||||
builder.settings_["allowComments_"] = hash_settings & (1 << 1);
|
builder.settings_["allowComments_"] = hash_settings & (1 << 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user