summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-11-23 08:18:38 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-11-25 21:34:50 +0000
commit26f62a423db22cb256c083dd77ca16e4686cf477 (patch)
treede4f693167711432d40801446a21e0d98c0c4c7f
parentf5efafffbce690ed924c5fd894d56774490b4520 (diff)
downloadpoky-26f62a423db22cb256c083dd77ca16e4686cf477.tar.gz
opkg: Add upstream fixes for empty packages
An ipk with a zero size data.tar file caused opkg to crash with a double free abort. Add the upstream fixes for this. (From OE-Core rev: ea1ded0b47e85d039dfad2b59580817bfb335739) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/opkg/opkg/open_inner.patch46
-rw-r--r--meta/recipes-devtools/opkg/opkg/opkg_archive.patch54
-rw-r--r--meta/recipes-devtools/opkg/opkg_0.4.1.bb2
3 files changed, 102 insertions, 0 deletions
diff --git a/meta/recipes-devtools/opkg/opkg/open_inner.patch b/meta/recipes-devtools/opkg/opkg/open_inner.patch
new file mode 100644
index 0000000000..cf4cb2f74b
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/open_inner.patch
@@ -0,0 +1,46 @@
1From alejandro.delcastillo@ni.com Wed Nov 20 22:35:02 2019
2From: Alejandro del Castillo <alejandro.delcastillo@ni.com>
3To: <opkg-devel@googlegroups.com>, <richard.purdie@linuxfoundation.org>
4CC: Alejandro del Castillo <alejandro.delcastillo@ni.com>
5Subject: [opkg][PATCH 2/2] open_inner: add support for empty payloads
6Date: Wed, 20 Nov 2019 16:34:48 -0600
7Message-ID: <20191120223448.26522-3-alejandro.delcastillo@ni.com>
8X-Mailer: git-send-email 2.22.0
9In-Reply-To: <20191120223448.26522-1-alejandro.delcastillo@ni.com>
10References: <20191120223448.26522-1-alejandro.delcastillo@ni.com>
11MIME-Version: 1.0
12Content-Type: text/plain
13Content-Transfer-Encoding: 8bit
14
15Support for empty compressed payloads need to be explicitly enabled on
16libarchive.
17
18Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
19
20Upstream-Status: Backport
21---
22 libopkg/opkg_archive.c | 7 +++++++
23 1 file changed, 7 insertions(+)
24
25diff --git a/libopkg/opkg_archive.c b/libopkg/opkg_archive.c
26index 0e9ccea..f19cece 100644
27--- a/libopkg/opkg_archive.c
28+++ b/libopkg/opkg_archive.c
29@@ -618,6 +618,13 @@ static struct archive *open_inner(struct archive *outer)
30 goto err_cleanup;
31 }
32
33+ r = archive_read_support_format_empty(inner);
34+ if (r != ARCHIVE_OK) {
35+ opkg_msg(ERROR, "Empty format not supported: %s\n",
36+ archive_error_string(inner));
37+ goto err_cleanup;
38+ }
39+
40 r = archive_read_open(inner, data, NULL, inner_read, inner_close);
41 if (r != ARCHIVE_OK) {
42 opkg_msg(ERROR, "Failed to open inner archive: %s\n",
43--
442.22.0
45
46
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
diff --git a/meta/recipes-devtools/opkg/opkg_0.4.1.bb b/meta/recipes-devtools/opkg/opkg_0.4.1.bb
index 104f07fda8..1cd7dcadb3 100644
--- a/meta/recipes-devtools/opkg/opkg_0.4.1.bb
+++ b/meta/recipes-devtools/opkg/opkg_0.4.1.bb
@@ -14,6 +14,8 @@ PE = "1"
14SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \ 14SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
15 file://opkg.conf \ 15 file://opkg.conf \
16 file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \ 16 file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
17 file://opkg_archive.patch \
18 file://open_inner.patch \
17 file://run-ptest \ 19 file://run-ptest \
18" 20"
19 21