Compare commits
10 Commits
f4fdfd681f
...
1f4fab535e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f4fab535e | ||
|
|
317c479698 | ||
|
|
c83cdcfec3 | ||
|
|
a563ff16d2 | ||
|
|
7dc6008255 | ||
|
|
2087520d8a | ||
|
|
8d0d89b4d3 | ||
|
|
2ee5a3bca3 | ||
|
|
f83cb83e3e | ||
|
|
29198acc97 |
66
backport-CVE-2020-12762.patch
Normal file
66
backport-CVE-2020-12762.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
From f51fcd59a8bbeb60eaf8ae0e398556be2fa3317a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Wang Haitao <wanghaitao.ouyang@foxmail.com>
|
||||||
|
Date: Tue, 14 Mar 2023 22:25:54 +0800
|
||||||
|
Subject: [PATCH] Fix CVE-2020-12762
|
||||||
|
|
||||||
|
reference: https://github.com/json-c/json-c/pull/592/files
|
||||||
|
|
||||||
|
I reproduce this CVE using the code from https://github.com/json-c/json-c/pull/592
|
||||||
|
|
||||||
|
And it fix it and no more segmentation fault
|
||||||
|
---
|
||||||
|
printbuf.c | 20 +++++++++++++++++---
|
||||||
|
1 file changed, 17 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/printbuf.c b/printbuf.c
|
||||||
|
index e9cde11..b02a363 100644
|
||||||
|
--- a/printbuf.c
|
||||||
|
+++ b/printbuf.c
|
||||||
|
@@ -13,6 +13,7 @@
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
+#include <limits.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
@@ -68,9 +69,16 @@ static int printbuf_extend(struct printbuf *p, int min_size)
|
||||||
|
if (p->size >= min_size)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- new_size = p->size * 2;
|
||||||
|
- if (new_size < min_size + 8)
|
||||||
|
- new_size = min_size + 8;
|
||||||
|
+ /* Prevent signed integer overflows with large buffers. */
|
||||||
|
+ if (min_size > INT_MAX - 8)
|
||||||
|
+ return -1;
|
||||||
|
+ if (p->size > INT_MAX / 2)
|
||||||
|
+ new_size = min_size + 8;
|
||||||
|
+ else {
|
||||||
|
+ new_size = p->size * 2;
|
||||||
|
+ if (new_size < min_size + 8)
|
||||||
|
+ new_size = min_size + 8;
|
||||||
|
+ }
|
||||||
|
#ifdef PRINTBUF_DEBUG
|
||||||
|
MC_DEBUG("printbuf_memappend: realloc "
|
||||||
|
"bpos=%d min_size=%d old_size=%d new_size=%d\n",
|
||||||
|
@@ -85,6 +93,9 @@ static int printbuf_extend(struct printbuf *p, int min_size)
|
||||||
|
|
||||||
|
int printbuf_memappend(struct printbuf *p, const char *buf, int size)
|
||||||
|
{
|
||||||
|
+ /* Prevent signed integer overflows with large buffers. */
|
||||||
|
+ if (size > INT_MAX - p->bpos - 1)
|
||||||
|
+ return -1;
|
||||||
|
if (p->size <= p->bpos + size + 1) {
|
||||||
|
if (printbuf_extend(p, p->bpos + size + 1) < 0)
|
||||||
|
return -1;
|
||||||
|
@@ -136,6 +147,9 @@ int printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len)
|
||||||
|
|
||||||
|
if (offset == -1)
|
||||||
|
offset = pb->bpos;
|
||||||
|
+ /* Prevent signed integer overflows with large buffers. */
|
||||||
|
+ if (len > INT_MAX - offset)
|
||||||
|
+ return -1;
|
||||||
|
size_needed = offset + len;
|
||||||
|
if (pb->size < size_needed)
|
||||||
|
{
|
||||||
Binary file not shown.
BIN
libfastjson-0.99.9.tar.gz
Normal file
BIN
libfastjson-0.99.9.tar.gz
Normal file
Binary file not shown.
@ -1,10 +1,12 @@
|
|||||||
Name: libfastjson
|
Name: libfastjson
|
||||||
Version: 0.99.8
|
Version: 0.99.9
|
||||||
Release: 1
|
Release: 3
|
||||||
Summary: JSON-C - A JSON implementation in C
|
Summary: JSON-C - A JSON implementation in C
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: https://github.com/rsyslog/libfastjson
|
URL: https://github.com/rsyslog/libfastjson
|
||||||
Source0: libfastjson-%{version}.tar.gz
|
Source0: http://download.rsyslog.com/%{name}/%{name}-%{version}.tar.gz
|
||||||
|
|
||||||
|
Patch1: backport-CVE-2020-12762.patch
|
||||||
|
|
||||||
BuildRequires: autoconf automake libtool
|
BuildRequires: autoconf automake libtool
|
||||||
|
|
||||||
@ -16,10 +18,11 @@ provide: a small library with essential json handling
|
|||||||
functions, sufficiently good json support (not 100%
|
functions, sufficiently good json support (not 100%
|
||||||
standards compliant), be very fast in processing.
|
standards compliant), be very fast in processing.
|
||||||
|
|
||||||
Obsoletes: %{name}
|
Obsoletes: %{name} < %{version}-%{release}
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Development files for libfastjson
|
Summary: Development files for libfastjson
|
||||||
|
Requires: libfastjson = %{version}-%{release}
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
provide development files for libfastjson
|
provide development files for libfastjson
|
||||||
@ -51,9 +54,24 @@ make V=1 check
|
|||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%{_includedir}/libfastjson
|
%{_includedir}/libfastjson
|
||||||
%{_libdir}/libfastjson.so*
|
%{_libdir}/libfastjson.so
|
||||||
%{_libdir}/pkgconfig/libfastjson.pc
|
%{_libdir}/pkgconfig/libfastjson.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Mar 28 2023 shixuantong <shixuantong1@huawei.com> - 0.99.9-3
|
||||||
|
- fix CVE-2020-12762
|
||||||
|
|
||||||
|
* Thu Sep 8 2022 panxiaohe <panxh.life@foxmail.com> - 0.99.9-2
|
||||||
|
- fix obsoletes in spec
|
||||||
|
|
||||||
|
* Fri Sep 24 2021 panxiaohe <panxiaohe@huawei.com> - 0.99.9-1
|
||||||
|
- update to 0.99.9
|
||||||
|
|
||||||
|
* Wed Jan 15 2020 openEuler Buildteam <buildteam@openeuler.org> - 0.99.8-3
|
||||||
|
- add requires
|
||||||
|
|
||||||
|
* Fri Jan 10 2020 BruceGW <gyl93216@163.com> - 0.99.8-2
|
||||||
|
- Fix duplicate provides
|
||||||
|
|
||||||
* Mon Sep 2 2019 openEuler Buildteam <buildteam@openeuler.org> - 0.99.8-1
|
* Mon Sep 2 2019 openEuler Buildteam <buildteam@openeuler.org> - 0.99.8-1
|
||||||
- Package init
|
- Package init
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user