summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.10.1-tar.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/busybox-1.10.1-tar.patch')
-rw-r--r--package/busybox/busybox-1.10.1-tar.patch24
1 files changed, 24 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.10.1-tar.patch b/package/busybox/busybox-1.10.1-tar.patch
new file mode 100644
index 000000000..fb479dd26
--- /dev/null
+++ b/package/busybox/busybox-1.10.1-tar.patch
@@ -0,0 +1,24 @@
+--- busybox-1.10.1/archival/libunarchive/get_header_tar.c Sat Apr 19 05:50:29 2008
++++ busybox-1.10.1-tar/archival/libunarchive/get_header_tar.c Tue Apr 29 06:12:29 2008
+@@ -112,7 +112,7 @@
+ archive_handle->offset += 512;
+
+ /* If there is no filename its an empty header */
+- if (tar.name[0] == 0) {
++ if (tar.name[0] == 0 && tar.prefix[0] == 0) {
+ if (end) {
+ /* This is the second consecutive empty header! End of archive!
+ * Read until the end to empty the pipe from gz or bz2
+@@ -211,9 +211,12 @@
+ /* getOctal trashes subsequent field, therefore we call it
+ * on fields in reverse order */
+ if (tar.devmajor[0]) {
++ char t = tar.prefix[0];
++ /* we trash prefix[0] here, but we DO need it later! */
+ unsigned minor = GET_OCTAL(tar.devminor);
+ unsigned major = GET_OCTAL(tar.devmajor);
+ file_header->device = makedev(major, minor);
++ tar.prefix[0] = t;
+ }
+ file_header->link_target = NULL;
+ if (!linkname && parse_names && tar.linkname[0]) {