summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/opkg/opkg/opkg_archive.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/opkg/opkg/opkg_archive.patch')
-rw-r--r--meta/recipes-devtools/opkg/opkg/opkg_archive.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/meta/recipes-devtools/opkg/opkg/opkg_archive.patch b/meta/recipes-devtools/opkg/opkg/opkg_archive.patch
new file mode 100644
index 0000000000..76ba63739a
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/opkg_archive.patch
@@ -0,0 +1,54 @@
1From alejandro.delcastillo@ni.com Wed Nov 20 22:35:01 2019
2Return-Path: <richard.purdie+caf_=rpurdie=rpsys.net@linuxfoundation.org>
3From: Alejandro del Castillo <alejandro.delcastillo@ni.com>
4To: <opkg-devel@googlegroups.com>, <richard.purdie@linuxfoundation.org>
5CC: Alejandro del Castillo <alejandro.delcastillo@ni.com>
6Subject: [opkg][PATCH 1/2] opkg_archive.c: avoid double free on uncompress
7 error
8Date: Wed, 20 Nov 2019 16:34:47 -0600
9Message-ID: <20191120223448.26522-2-alejandro.delcastillo@ni.com>
10X-Mailer: git-send-email 2.22.0
11In-Reply-To: <20191120223448.26522-1-alejandro.delcastillo@ni.com>
12References: <20191120223448.26522-1-alejandro.delcastillo@ni.com>
13MIME-Version: 1.0
14Content-Type: text/plain
15Content-Transfer-Encoding: 8bit
16
17The open-inner function calls archive_read_open. On error,
18archive_read_open calls inner_close, which also closes the outter
19archive. On error, return NULL directly to avoid double free.
20
21
22Upstream-Status: Backport
23
24Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
25---
26 libopkg/opkg_archive.c | 4 ++--
27 1 file changed, 2 insertions(+), 2 deletions(-)
28
29diff --git a/libopkg/opkg_archive.c b/libopkg/opkg_archive.c
30index 3d87db1..0e9ccea 100644
31--- a/libopkg/opkg_archive.c
32+++ b/libopkg/opkg_archive.c
33@@ -622,7 +622,7 @@ static struct archive *open_inner(struct archive *outer)
34 if (r != ARCHIVE_OK) {
35 opkg_msg(ERROR, "Failed to open inner archive: %s\n",
36 archive_error_string(inner));
37- goto err_cleanup;
38+ return NULL;
39 }
40
41 return inner;
42@@ -683,7 +683,7 @@ static struct archive *extract_outer(const char *filename, const char *arname)
43
44 inner = open_inner(outer);
45 if (!inner)
46- goto err_cleanup;
47+ return NULL;
48
49 return inner;
50
51--
522.22.0
53
54