mirror of
https://git.yoctoproject.org/poky
synced 2026-06-03 13:49:49 +00:00
unzip: Port debian fixes for two CVEs
Add two fixes from debian for two CVEs. From: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1010355 I wans't able to get the reproducers to work but the added error checking isn't probably a bad thing. (From OE-Core rev: 054be00a632c2918dd1f973e76514e459fc6f017) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -0,0 +1,39 @@
|
|||||||
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1010355
|
||||||
|
|
||||||
|
CVE: CVE-2022-0529
|
||||||
|
Upstream-Status: Inactive-Upstream [need a new release]
|
||||||
|
|
||||||
|
diff --git a/process.c b/process.c
|
||||||
|
index d2a846e..99b9c7b 100644
|
||||||
|
--- a/process.c
|
||||||
|
+++ b/process.c
|
||||||
|
@@ -2507,13 +2507,15 @@ char *wide_to_local_string(wide_string, escape_all)
|
||||||
|
char buf[9];
|
||||||
|
char *buffer = NULL;
|
||||||
|
char *local_string = NULL;
|
||||||
|
+ size_t buffer_size;
|
||||||
|
|
||||||
|
for (wsize = 0; wide_string[wsize]; wsize++) ;
|
||||||
|
|
||||||
|
if (max_bytes < MAX_ESCAPE_BYTES)
|
||||||
|
max_bytes = MAX_ESCAPE_BYTES;
|
||||||
|
|
||||||
|
- if ((buffer = (char *)malloc(wsize * max_bytes + 1)) == NULL) {
|
||||||
|
+ buffer_size = wsize * max_bytes + 1;
|
||||||
|
+ if ((buffer = (char *)malloc(buffer_size)) == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2552,7 +2554,11 @@ char *wide_to_local_string(wide_string, escape_all)
|
||||||
|
/* no MB for this wide */
|
||||||
|
/* use escape for wide character */
|
||||||
|
char *escape_string = wide_to_escape_string(wide_string[i]);
|
||||||
|
- strcat(buffer, escape_string);
|
||||||
|
+ size_t buffer_len = strlen(buffer);
|
||||||
|
+ size_t escape_string_len = strlen(escape_string);
|
||||||
|
+ if (buffer_len + escape_string_len + 1 > buffer_size)
|
||||||
|
+ escape_string_len = buffer_size - buffer_len - 1;
|
||||||
|
+ strncat(buffer, escape_string, escape_string_len);
|
||||||
|
free(escape_string);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1010355
|
||||||
|
|
||||||
|
CVE: CVE-2022-0530
|
||||||
|
Upstream-Status: Inactive-Upstream [need a new release]
|
||||||
|
|
||||||
|
diff --git a/fileio.c b/fileio.c
|
||||||
|
index 6290824..77e4b5f 100644
|
||||||
|
--- a/fileio.c
|
||||||
|
+++ b/fileio.c
|
||||||
|
@@ -2361,6 +2361,9 @@ int do_string(__G__ length, option) /* return PK-type error code */
|
||||||
|
/* convert UTF-8 to local character set */
|
||||||
|
fn = utf8_to_local_string(G.unipath_filename,
|
||||||
|
G.unicode_escape_all);
|
||||||
|
+ if (fn == NULL)
|
||||||
|
+ return PK_ERR;
|
||||||
|
+
|
||||||
|
/* make sure filename is short enough */
|
||||||
|
if (strlen(fn) >= FILNAMSIZ) {
|
||||||
|
fn[FILNAMSIZ - 1] = '\0';
|
||||||
|
diff --git a/process.c b/process.c
|
||||||
|
index d2a846e..715bc0f 100644
|
||||||
|
--- a/process.c
|
||||||
|
+++ b/process.c
|
||||||
|
@@ -2605,6 +2605,8 @@ char *utf8_to_local_string(utf8_string, escape_all)
|
||||||
|
int escape_all;
|
||||||
|
{
|
||||||
|
zwchar *wide = utf8_to_wide_string(utf8_string);
|
||||||
|
+ if (wide == NULL)
|
||||||
|
+ return NULL;
|
||||||
|
char *loc = wide_to_local_string(wide, escape_all);
|
||||||
|
free(wide);
|
||||||
|
return loc;
|
||||||
|
|
||||||
@@ -29,6 +29,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/
|
|||||||
file://unzip_optimization.patch \
|
file://unzip_optimization.patch \
|
||||||
file://0001-configure-Pass-LDFLAGS-to-tests-doing-link-step.patch \
|
file://0001-configure-Pass-LDFLAGS-to-tests-doing-link-step.patch \
|
||||||
file://CVE-2021-4217.patch \
|
file://CVE-2021-4217.patch \
|
||||||
|
file://CVE-2022-0529.patch \
|
||||||
|
file://CVE-2022-0530.patch \
|
||||||
"
|
"
|
||||||
UPSTREAM_VERSION_UNKNOWN = "1"
|
UPSTREAM_VERSION_UNKNOWN = "1"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user