From 61b28f3aa9097be8de1e41cdb771996596d9c549 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 12 Aug 2024 10:49:44 +0800 Subject: [PATCH] Bugfix-for-CVE-2023-49355 --- Bugfix-for-CVE-2023-49355.patch | 45 +++++++++++++++++++++++++++++++++ jq.spec | 10 +++++++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 Bugfix-for-CVE-2023-49355.patch diff --git a/Bugfix-for-CVE-2023-49355.patch b/Bugfix-for-CVE-2023-49355.patch new file mode 100644 index 0000000..2924776 --- /dev/null +++ b/Bugfix-for-CVE-2023-49355.patch @@ -0,0 +1,45 @@ +From a2fa6c91780665a87332890d3a6426b4e6201bf1 Mon Sep 17 00:00:00 2001 +From: root +Date: Mon, 12 Aug 2024 10:37:07 +0800 +Subject: [PATCH] Bugfix for CVE-2023-49355 + +--- + src/decNumber/decNumber.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/decNumber/decNumber.c b/src/decNumber/decNumber.c +index 2572fac..030c1dd 100644 +--- a/src/decNumber/decNumber.c ++++ b/src/decNumber/decNumber.c +@@ -582,6 +582,7 @@ decNumber * decNumberFromString(decNumber *dn, const char chars[], + Flag nege; // 1=negative exponent + const char *firstexp; // -> first significant exponent digit + status=DEC_Conversion_syntax;// assume the worst ++ uInt expa=0; + if (*c!='e' && *c!='E') break; + /* Found 'e' or 'E' -- now process explicit exponent */ + // 1998.07.11: sign no longer required +@@ -595,7 +596,7 @@ decNumber * decNumberFromString(decNumber *dn, const char chars[], + firstexp=c; // save exponent digit place + for (; ;c++) { + if (*c<'0' || *c>'9') break; // not a digit +- exponent=X10(exponent)+(Int)*c-(Int)'0'; ++ expa=X10(expa)+(Int)*c-(Int)'0'; + } // c + // if not now on a '\0', *c must not be a digit + if (*c!='\0') break; +@@ -604,9 +605,10 @@ decNumber * decNumberFromString(decNumber *dn, const char chars[], + // if it was too long the exponent may have wrapped, so check + // carefully and set it to a certain overflow if wrap possible + if (c>=firstexp+9+1) { +- if (c>firstexp+9+1 || *firstexp>'1') exponent=DECNUMMAXE*2; ++ if (c>firstexp+9+1 || *firstexp>'1') expa=DECNUMMAXE*2; + // [up to 1999999999 is OK, for example 1E-1000000998] + } ++ exponent=(Int)expa; // save exponent + if (nege) exponent=-exponent; // was negative + status=0; // is OK + } // stuff after digits +-- +2.27.0 + diff --git a/jq.spec b/jq.spec index 5d8e9a2..e81bb28 100644 --- a/jq.spec +++ b/jq.spec @@ -1,4 +1,4 @@ -%define anolis_release 15 +%define anolis_release 16 Name: jq Version: 1.6 Release: %{anolis_release}%{?dist} @@ -12,6 +12,11 @@ Patch0: 0000-jq-decimal-literal-number.patch Patch1: jq-fix-non-decimal-string.patch Patch2: jq-configure-c99-1.patch Patch3: jq-configure-c99-2.patch + +# CVE-2023-49355 +# Upstream fix: https://github.com/jqlang/jq/commit/7ffb7943d4743e852f277c6a09586e110874b72f +Patch4: Bugfix-for-CVE-2023-49355.patch + BuildRequires: flex BuildRequires: bison BuildRequires: oniguruma-devel @@ -95,5 +100,8 @@ make check %{_libdir}/libjq.so %changelog +* Mon Aug 12 2024 lidongyue - 1.6-16 +- Fix CVE-2023-49355 + * Tue Jan 24 2023 Funda Wang - 1.6-15 - Import package for anolis 23 -- Gitee