mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-21 22:42:25 +02:00
Fixed deserializeJson()
not being picky enough (fixes #969)
This commit is contained in:
@ -5,6 +5,7 @@ HEAD
|
|||||||
----
|
----
|
||||||
|
|
||||||
* Fixed error "attributes are not allowed on a function-definition"
|
* Fixed error "attributes are not allowed on a function-definition"
|
||||||
|
* Fixed `deserializeJson()` not being picky enough (issue #969)
|
||||||
|
|
||||||
v6.10.0 (2019-03-22)
|
v6.10.0 (2019-03-22)
|
||||||
-------
|
-------
|
||||||
|
@ -140,6 +140,9 @@ inline ParsedNumber<TFloat, TUInt> parseNumber(const char *s) {
|
|||||||
}
|
}
|
||||||
exponent += exponent_offset;
|
exponent += exponent_offset;
|
||||||
|
|
||||||
|
// we should be at the end of the string, otherwise it's an error
|
||||||
|
if (*s != '\0') return return_type();
|
||||||
|
|
||||||
TFloat result = traits::make_float(static_cast<TFloat>(mantissa), exponent);
|
TFloat result = traits::make_float(static_cast<TFloat>(mantissa), exponent);
|
||||||
|
|
||||||
return is_negative ? -result : result;
|
return is_negative ? -result : result;
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
#include <catch.hpp>
|
#include <catch.hpp>
|
||||||
|
|
||||||
TEST_CASE("Invalid JSON input") {
|
TEST_CASE("Invalid JSON input") {
|
||||||
const char* testCases[] = {"'\\u'", "'\\u000g'", "'\\u000'",
|
const char* testCases[] = {"'\\u'", "'\\u000g'", "'\\u000'", "'\\u000G'",
|
||||||
"'\\u000G'", "'\\u000/'", "\\x1234"};
|
"'\\u000/'", "\\x1234", "6a9"};
|
||||||
const size_t testCount = sizeof(testCases) / sizeof(testCases[0]);
|
const size_t testCount = sizeof(testCases) / sizeof(testCases[0]);
|
||||||
|
|
||||||
DynamicJsonDocument doc(4096);
|
DynamicJsonDocument doc(4096);
|
||||||
|
@ -16,3 +16,9 @@ TEST_CASE("Test uint32_t overflow") {
|
|||||||
REQUIRE(first.type() == uint8_t(VALUE_IS_POSITIVE_INTEGER));
|
REQUIRE(first.type() == uint8_t(VALUE_IS_POSITIVE_INTEGER));
|
||||||
REQUIRE(second.type() == uint8_t(VALUE_IS_FLOAT));
|
REQUIRE(second.type() == uint8_t(VALUE_IS_FLOAT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Invalid value") {
|
||||||
|
ParsedNumber<float, uint32_t> result = parseNumber<float, uint32_t>("6a3");
|
||||||
|
|
||||||
|
REQUIRE(result.type() == uint8_t(VALUE_IS_NULL));
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user