From ac2d02c3e08c4c3d62859bffb4dd3bb891b3d5c6 Mon Sep 17 00:00:00 2001 From: kaloz Date: Wed, 20 Aug 2008 14:00:34 +0000 Subject: upgrade busybox to v1.11.1 and add current upstream fixes git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12348 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/busybox/patches/902-tar.patch | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 package/busybox/patches/902-tar.patch (limited to 'package/busybox/patches/902-tar.patch') diff --git a/package/busybox/patches/902-tar.patch b/package/busybox/patches/902-tar.patch new file mode 100644 index 000000000..d9bf7cd0c --- /dev/null +++ b/package/busybox/patches/902-tar.patch @@ -0,0 +1,55 @@ +--- a/archival/libunarchive/get_header_tar.c ++++ b/archival/libunarchive/get_header_tar.c +@@ -261,26 +261,33 @@ + case '0': + #if ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY + if (last_char_is(file_header->name, '/')) { +- file_header->mode |= S_IFDIR; +- } else ++ goto set_dir; ++ } + #endif + file_header->mode |= S_IFREG; + break; + case '2': + file_header->mode |= S_IFLNK; ++ /* have seen tarballs with size field containing ++ * the size of the link target's name */ ++ size0: ++ file_header->size = 0; + break; + case '3': + file_header->mode |= S_IFCHR; +- break; ++ goto size0; /* paranoia */ + case '4': + file_header->mode |= S_IFBLK; +- break; ++ goto size0; + case '5': ++#if ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY ++ set_dir: ++#endif + file_header->mode |= S_IFDIR; +- break; ++ goto size0; + case '6': + file_header->mode |= S_IFIFO; +- break; ++ goto size0; + #if ENABLE_FEATURE_TAR_GNU_EXTENSIONS + case 'L': + /* free: paranoia: tar with several consecutive longnames */ +--- a/archival/libunarchive/seek_by_jump.c ++++ b/archival/libunarchive/seek_by_jump.c +@@ -8,7 +8,9 @@ + + void seek_by_jump(const archive_handle_t *archive_handle, unsigned amount) + { +- if (lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1) { ++ if (amount ++ && lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1 ++ ) { + if (errno == ESPIPE) + seek_by_read(archive_handle, amount); + else -- cgit v1.2.3