diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-04-05 22:28:33 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-04-05 22:31:28 +0300 |
commit | 193236933b0f4ab91b1625b64e2187e2db4e0e8f (patch) | |
tree | e12769d7c76d8b0517d6de3d3c72189753d253ed /poky/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch | |
parent | bd93df9478f2f56ffcbc8cb88f1709c735dcd85b (diff) | |
download | openbmc-193236933b0f4ab91b1625b64e2187e2db4e0e8f.tar.xz |
reset upstream subtrees to HEAD
Reset the following subtrees on HEAD:
poky: 8217b477a1(master)
meta-xilinx: 64aa3d35ae(master)
meta-openembedded: 0435c9e193(master)
meta-raspberrypi: 490a4441ac(master)
meta-security: cb6d1c85ee(master)
Squashed patches:
meta-phosphor: drop systemd 239 patches
meta-phosphor: mrw-api: use correct install path
Change-Id: I268e2646d9174ad305630c6bbd3fbc1a6105f43d
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'poky/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch')
-rw-r--r-- | poky/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch | 100 |
1 files changed, 32 insertions, 68 deletions
diff --git a/poky/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch b/poky/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch index 2043c890c..ec8b303c4 100644 --- a/poky/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch +++ b/poky/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch @@ -1,87 +1,51 @@ -Upstream-Status: Submitted [bugs-cpio] +Upstream-Status: Backport Signed-off-by: Ross Burton <ross.burton@intel.com> -From 3f0bd5a40ad0ceaee78c74a52a7166ed7f08db81 Mon Sep 17 00:00:00 2001 -From: Pavel Raiskup <praiskup@redhat.com> -Date: Thu, 29 Nov 2018 07:03:48 +0100 -Subject: [PATCH] Fix segfault with --append +From 32d95fe0c90c59352a0ce3102fc9866cbfb0f629 Mon Sep 17 00:00:00 2001 +From: Sergey Poznyakoff <gray@gnu.org> +Date: Sat, 1 Dec 2018 11:40:02 +0200 +Subject: [PATCH] Fix sigfault when appending to archive -The --append mode combines both process_copy_in() and -process_copy_out() methods, each of them working with different -(local) file_hdr->c_name buffers. So ensure that -cpio_set_c_name() isn't using the same static variable for -maintaining length of different buffers. +Bug reported by Ross Burton. See +<http://lists.gnu.org/archive/html/bug-cpio/2018-11/msg00000.html> -Complements d36ec5f4e93130efb24fb9. Thanks to Ross Burton. - -* src/copyin.c (process_copy_in): Always initialize file_hdr. -* src/copyout.c (process_copy_out): Likewise. -* src/cpiohdr.h (cpio_file_stat): Add c_name_buflen variable. -* src/util.c (cpio_set_c_name): Use file_hdr->c_name_buflen. +* src/util.c: Keep static copy of the buffer pointer; always +assign it to file_hdr->c_name. Use x2realloc for memory management. --- - src/copyin.c | 1 + - src/copyout.c | 1 + - src/cpiohdr.h | 1 + - src/util.c | 3 ++- - 4 files changed, 5 insertions(+), 1 deletion(-) + src/util.c | 17 ++++------------- + 1 file changed, 4 insertions(+), 13 deletions(-) -diff --git a/src/copyin.c b/src/copyin.c -index ba887ae..767c2f8 100644 ---- a/src/copyin.c -+++ b/src/copyin.c -@@ -1213,6 +1213,7 @@ process_copy_in () - - newdir_umask = umask (0); /* Reset umask to preserve modes of - created files */ -+ memset (&file_hdr, 0, sizeof (struct cpio_file_stat)); - - /* Initialize the copy in. */ - if (pattern_file_name) -diff --git a/src/copyout.c b/src/copyout.c -index 7532dac..fb890cb 100644 ---- a/src/copyout.c -+++ b/src/copyout.c -@@ -594,6 +594,7 @@ process_copy_out () - - /* Initialize the copy out. */ - ds_init (&input_name, 128); -+ memset (&file_hdr, 0, sizeof (struct cpio_file_stat)); - file_hdr.c_magic = 070707; - - /* Check whether the output file might be a tape. */ -diff --git a/src/cpiohdr.h b/src/cpiohdr.h -index 588135b..cf64f3e 100644 ---- a/src/cpiohdr.h -+++ b/src/cpiohdr.h -@@ -127,6 +127,7 @@ struct cpio_file_stat /* Internal representation of a CPIO header */ - uint32_t c_chksum; - char *c_name; - char *c_tar_linkname; -+ size_t c_name_buflen; - }; - - void cpio_set_c_name(struct cpio_file_stat *file_hdr, char *name); diff --git a/src/util.c b/src/util.c -index 10486dc..1256469 100644 +index 10486dc..4e49124 100644 --- a/src/util.c +++ b/src/util.c -@@ -1413,7 +1413,7 @@ set_file_times (int fd, +@@ -1413,22 +1413,13 @@ set_file_times (int fd, void cpio_set_c_name (struct cpio_file_stat *file_hdr, char *name) { -- static size_t buflen = 0; -+ size_t buflen = file_hdr->c_name_buflen; ++ static char *buf = NULL; + static size_t buflen = 0; size_t len = strlen (name) + 1; - if (buflen == 0) -@@ -1430,6 +1430,7 @@ cpio_set_c_name (struct cpio_file_stat *file_hdr, char *name) - } - +- if (buflen == 0) +- { +- buflen = len; +- if (buflen < 32) +- buflen = 32; +- file_hdr->c_name = xmalloc (buflen); +- } +- else if (buflen < len) +- { +- buflen = len; +- file_hdr->c_name = xrealloc (file_hdr->c_name, buflen); +- } +- ++ while (buflen < len) ++ buf = x2realloc (buf, &buflen); ++ file_hdr->c_name = buf; file_hdr->c_namesize = len; -+ file_hdr->c_name_buflen = buflen; memmove (file_hdr->c_name, name, len); } - -- -2.11.0 +2.18.0 |