sync:Add nullptr Json::Value constructor
Signed-off-by: zhangzhangxin <zhangxin1@xfusion.com>
This commit is contained in:
parent
e5d3782487
commit
9161a3502b
121
0003-sync-Add-nullptr-Json-Value-constructor.patch
Normal file
121
0003-sync-Add-nullptr-Json-Value-constructor.patch
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
From 8cd6c2a6db9c35e44d7551d6f2ed3acaf29f1777 Mon Sep 17 00:00:00 2001
|
||||||
|
From: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
Date: Fri, 28 Apr 2023 14:25:44 +0800
|
||||||
|
Subject: [PATCH] sync:Add nullptr Json::Value constructor
|
||||||
|
|
||||||
|
Signed-off-by: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
||||||
|
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 <zhangxin1@xfusion.com>
|
||||||
|
+Date: Fri, 28 Apr 2023 10:50:40 +0800
|
||||||
|
+Subject: [PATCH] sync:Issue 1182: Fix fuzzing bug
|
||||||
|
+
|
||||||
|
+Signed-off-by: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
+---
|
||||||
|
+ 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 <zhangxin1@xfusion.com>
|
||||||
|
+Date: Fri, 28 Apr 2023 11:54:36 +0800
|
||||||
|
+Subject: [PATCH] sync:avoid isprint, because it is locale specific
|
||||||
|
+
|
||||||
|
+Signed-off-by: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
+---
|
||||||
|
+ 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
|
||||||
|
+++ b/include/json/value.h
|
||||||
|
@@ -342,6 +342,7 @@ public:
|
||||||
|
Value(const StaticString& value);
|
||||||
|
Value(const String& value);
|
||||||
|
Value(bool value);
|
||||||
|
+ Value(std::nullptr_t ptr) = delete;
|
||||||
|
Value(const Value& other);
|
||||||
|
Value(Value&& other);
|
||||||
|
~Value();
|
||||||
|
--
|
||||||
|
2.40.0.windows.1
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
Name: jsoncpp
|
Name: jsoncpp
|
||||||
Version: 1.9.3
|
Version: 1.9.3
|
||||||
Release: 4
|
Release: 5
|
||||||
Summary: JSON C++ library
|
Summary: JSON C++ library
|
||||||
License: Public Domain or MIT
|
License: Public Domain or MIT
|
||||||
URL: https://github.com/open-source-parsers/jsoncpp
|
URL: https://github.com/open-source-parsers/jsoncpp
|
||||||
@ -8,6 +8,7 @@ Source0: https://github.com/open-source-parsers/jsoncpp/archive/%{version
|
|||||||
BuildRequires: gcc-c++ cmake >= 3.1 python3-devel
|
BuildRequires: gcc-c++ cmake >= 3.1 python3-devel
|
||||||
Patch0: 0001-sync-Issue-1182-Fix-fuzzing-bug.patch
|
Patch0: 0001-sync-Issue-1182-Fix-fuzzing-bug.patch
|
||||||
Patch1: 0002-sync-avoid-isprint-because-it-is-locale-specific.patch
|
Patch1: 0002-sync-avoid-isprint-because-it-is-locale-specific.patch
|
||||||
|
Patch2: 0003-sync-Add-nullptr-Json-Value-constructor.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
JsonCpp is a C++ library that allows manipulating JSON values,
|
JsonCpp is a C++ library that allows manipulating JSON values,
|
||||||
@ -89,6 +90,9 @@ hardlink -cfv %{buildroot}%{_docdir}/%{name}
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Apr 28 2023 zhangxin <zhangxin1@xfusion.com> - 1.9.3-5
|
||||||
|
- Add nullptr Json::Value constructor
|
||||||
|
|
||||||
* Fri Apr 28 2023 zhangxin <zhangxin1@xfusion.com> - 1.9.3-4
|
* Fri Apr 28 2023 zhangxin <zhangxin1@xfusion.com> - 1.9.3-4
|
||||||
- avoid isprint, because it is locale specific
|
- avoid isprint, because it is locale specific
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user