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 0000000000000000000000000000000000000000..c051e5a362d0aac197f0403509cf52ccbd46b590 --- /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/jsoncpp.spec b/jsoncpp.spec index f0b3def8ab39584a4e7a83c2292eb18c3e038fcd..b9279e8bfa64f25d1cc205104cd268a35b91e9dc 100644 --- a/jsoncpp.spec +++ b/jsoncpp.spec @@ -1,12 +1,13 @@ Name: jsoncpp Version: 1.9.3 -Release: 3 +Release: 4 Summary: JSON C++ library License: Public Domain or MIT URL: https://github.com/open-source-parsers/jsoncpp Source0: https://github.com/open-source-parsers/jsoncpp/archive/%{version}/%{name}-%{version}.tar.gz BuildRequires: gcc-c++ cmake >= 3.1 python3-devel Patch0: 0001-sync-Issue-1182-Fix-fuzzing-bug.patch +Patch1: 0002-sync-avoid-isprint-because-it-is-locale-specific.patch %description JsonCpp is a C++ library that allows manipulating JSON values, @@ -88,6 +89,9 @@ hardlink -cfv %{buildroot}%{_docdir}/%{name} %changelog +* Fri Apr 28 2023 zhangxin - 1.9.3-4 +- avoid isprint, because it is locale specific + * Fri Apr 28 2023 zhangxin - 1.9.3-3 - Issue 1182: Fix fuzzing bug