diff --git a/0003-sync-Add-nullptr-Json-Value-constructor.patch b/0003-sync-Add-nullptr-Json-Value-constructor.patch index a1a2494..8ee15d8 100644 --- a/0003-sync-Add-nullptr-Json-Value-constructor.patch +++ b/0003-sync-Add-nullptr-Json-Value-constructor.patch @@ -1,109 +1,13 @@ -From 8cd6c2a6db9c35e44d7551d6f2ed3acaf29f1777 Mon Sep 17 00:00:00 2001 +From 8009add0cae666b14677376269b2b2f810ede318 Mon Sep 17 00:00:00 2001 From: zhangzhangxin -Date: Fri, 28 Apr 2023 14:25:44 +0800 +Date: Fri, 28 Apr 2023 15:49:46 +0800 Subject: [PATCH] sync:Add nullptr Json::Value constructor Signed-off-by: zhangzhangxin --- - 0001-sync-Issue-1182-Fix-fuzzing-bug.patch | 40 +++++++++++++++++++ - ...sprint-because-it-is-locale-specific.patch | 40 +++++++++++++++++++ - include/json/value.h | 1 + - 3 files changed, 81 insertions(+) - create mode 100644 0001-sync-Issue-1182-Fix-fuzzing-bug.patch - create mode 100644 0002-sync-avoid-isprint-because-it-is-locale-specific.patch + include/json/value.h | 1 + + 1 file changed, 1 insertion(+) -diff --git a/0001-sync-Issue-1182-Fix-fuzzing-bug.patch b/0001-sync-Issue-1182-Fix-fuzzing-bug.patch -new file mode 100644 -index 0000000..79374d4 ---- /dev/null -+++ b/0001-sync-Issue-1182-Fix-fuzzing-bug.patch -@@ -0,0 +1,40 @@ -+From 0398d63a8435d5b8f71f07aa8c42e7d65815f97e Mon Sep 17 00:00:00 2001 -+From: zhangzhangxin -+Date: Fri, 28 Apr 2023 10:50:40 +0800 -+Subject: [PATCH] sync:Issue 1182: Fix fuzzing bug -+ -+Signed-off-by: zhangzhangxin -+--- -+ src/lib_json/json_reader.cpp | 7 +++++-- -+ test/data/fail_invalid_quote.json | 1 + -+ 2 files changed, 6 insertions(+), 2 deletions(-) -+ create mode 100644 test/data/fail_invalid_quote.json -+ -+diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp -+index 23cbe60..19922a8 100644 -+--- a/src/lib_json/json_reader.cpp -++++ b/src/lib_json/json_reader.cpp -+@@ -1175,8 +1175,11 @@ bool OurReader::readToken(Token& token) { -+ if (features_.allowSingleQuotes_) { -+ token.type_ = tokenString; -+ ok = readStringSingleQuote(); -+- break; -+- } // else fall through -++ } else { -++ // If we don't allow single quotes, this is a failure case. -++ ok = false; -++ } -++ break; -+ case '/': -+ token.type_ = tokenComment; -+ ok = readComment(); -+diff --git a/test/data/fail_invalid_quote.json b/test/data/fail_invalid_quote.json -+new file mode 100644 -+index 0000000..0dd76ed -+--- /dev/null -++++ b/test/data/fail_invalid_quote.json -+@@ -0,0 +1 @@ -++{'//this is bad JSON.'} -+-- -+2.40.0.windows.1 -+ -diff --git a/0002-sync-avoid-isprint-because-it-is-locale-specific.patch b/0002-sync-avoid-isprint-because-it-is-locale-specific.patch -new file mode 100644 -index 0000000..c051e5a ---- /dev/null -+++ b/0002-sync-avoid-isprint-because-it-is-locale-specific.patch -@@ -0,0 +1,40 @@ -+From 08fec11ca29e0bce7d8cece6d2ab62d0604b2c9a Mon Sep 17 00:00:00 2001 -+From: zhangzhangxin -+Date: Fri, 28 Apr 2023 11:54:36 +0800 -+Subject: [PATCH] sync:avoid isprint, because it is locale specific -+ -+Signed-off-by: zhangzhangxin -+--- -+ src/lib_json/json_writer.cpp | 6 +++--- -+ 1 file changed, 3 insertions(+), 3 deletions(-) -+ -+diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp -+index 03a777f..8bf02db 100644 -+--- a/src/lib_json/json_writer.cpp -++++ b/src/lib_json/json_writer.cpp -+@@ -175,11 +175,11 @@ String valueToString(double value, unsigned int precision, -+ -+ String valueToString(bool value) { return value ? "true" : "false"; } -+ -+-static bool isAnyCharRequiredQuoting(char const* s, size_t n) { -++static bool doesAnyCharRequireEscaping(char const* s, size_t n) { -+ assert(s || !n); -+ -+ return std::any_of(s, s + n, [](unsigned char c) { -+- return c == '\\' || c == '"' || !std::isprint(c); -++ return c == '\\' || c == '"' || c < 0x20 || c > 0x7F; -+ }); -+ } -+ -+@@ -275,7 +275,7 @@ static String valueToQuotedStringN(const char* value, unsigned length, -+ if (value == nullptr) -+ return ""; -+ -+- if (!isAnyCharRequiredQuoting(value, length)) -++ if (!doesAnyCharRequireEscaping(value, length)) -+ return String("\"") + value + "\""; -+ // We have to walk value and escape any special characters. -+ // Appending to String is not efficient, but this should be rare. -+-- -+2.40.0.windows.1 -+ diff --git a/include/json/value.h b/include/json/value.h index dffc51a..df1eba6 100644 --- a/include/json/value.h