opkg: add patch to fix SIGSEGV when printing status file
* it was triggered by c02364f36e228835ea5d7fd4e1d347fd451f8544 when new package had 2 entries in Provides and old version just 1 (From OE-Core rev: d98d6ec9425bd8764405c9812cddfcfd2a2b025b) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
305993d818
commit
15b913d0cb
|
@ -0,0 +1,49 @@
|
|||
From 3340b120909ea353440cfffe01fed43c55387a00 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
Date: Wed, 19 Sep 2012 17:31:45 +0200
|
||||
Subject: [PATCH 7/7] merge newpkg->provides even when oldpkg->provides
|
||||
existed
|
||||
|
||||
* introduced in http://code.google.com/p/opkg/source/diff?spec=svn277&r=277&format=side&path=/trunk/libopkg/pkg.c
|
||||
* the problem happens when oldpkg provide 1 and newpkg provide 2
|
||||
provides_count is merged to 2, but oldpkg->provides has only 1 entry
|
||||
causing SIGSEGV:
|
||||
pkg_formatted_field (fp=fp@entry=0x1444ce0, pkg=pkg@entry=0x120c620, field=<optimized out>, field@entry=0x7ffff7bd2abe "Provides") at pkg.c:739
|
||||
739 fprintf(fp, "%s %s", i == 1 ? "" : ",",
|
||||
(gdb) bt
|
||||
#0 pkg_formatted_field (fp=fp@entry=0x1444ce0, pkg=pkg@entry=0x120c620, field=<optimized out>, field@entry=0x7ffff7bd2abe "Provides") at pkg.c:739
|
||||
#1 0x00007ffff7bc32fc in pkg_print_status (pkg=0x120c620, file=0x1444ce0) at pkg.c:887
|
||||
#2 0x00007ffff7bbff59 in opkg_conf_write_status_files () at opkg_conf.c:400
|
||||
#3 0x00007ffff7bbad8a in write_status_files_if_changed () at opkg_cmd.c:65
|
||||
#4 0x00007ffff7bbb73e in opkg_upgrade_cmd (argc=<optimized out>, argv=<optimized out>) at opkg_cmd.c:577
|
||||
#5 0x00007ffff7bbbcc2 in opkg_cmd_exec (cmd=cmd@entry=0x7ffff7dda080, argc=argc@entry=1, argv=argv@entry=0x7fffffffe768) at opkg_cmd.c:1319
|
||||
#6 0x000000000040165f in main (argc=3, argv=0x7fffffffe758) at opkg-cl.c:377
|
||||
|
||||
Upstream-Status: Submitted
|
||||
http://code.google.com/p/opkg/issues/detail?id=93
|
||||
|
||||
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
---
|
||||
libopkg/pkg.c | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libopkg/pkg.c b/libopkg/pkg.c
|
||||
index be486ee..255c673 100644
|
||||
--- a/libopkg/pkg.c
|
||||
+++ b/libopkg/pkg.c
|
||||
@@ -377,10 +377,8 @@ pkg_merge(pkg_t *oldpkg, pkg_t *newpkg)
|
||||
oldpkg->provides_count = newpkg->provides_count;
|
||||
newpkg->provides_count = 0;
|
||||
|
||||
- if (!oldpkg->provides) {
|
||||
- oldpkg->provides = newpkg->provides;
|
||||
- newpkg->provides = NULL;
|
||||
- }
|
||||
+ oldpkg->provides = newpkg->provides;
|
||||
+ newpkg->provides = NULL;
|
||||
}
|
||||
|
||||
if (!oldpkg->conflicts_count) {
|
||||
--
|
||||
1.7.12
|
||||
|
|
@ -7,6 +7,7 @@ SRC_URI = "svn://opkg.googlecode.com/svn;module=trunk;protocol=http \
|
|||
file://0004-Failed-postinst-script-is-not-fatal-with-conf-offlin.patch \
|
||||
file://0005-Do-not-read-etc-opkg-.conf-if-f-is-specified.patch \
|
||||
file://0006-detect-circular-dependencies.patch \
|
||||
file://0007-merge-newpkg-provides-even-when-oldpkg-provides-exis.patch \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/trunk"
|
||||
|
@ -14,4 +15,4 @@ S = "${WORKDIR}/trunk"
|
|||
SRCREV = "633"
|
||||
PV = "0.1.8+svnr${SRCPV}"
|
||||
|
||||
PR = "${INC_PR}.2"
|
||||
PR = "${INC_PR}.3"
|
||||
|
|
Loading…
Reference in New Issue