summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-04-29 03:54:16 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-04-29 03:54:16 +0000
commitd93400bffb363463739ef7d4f63fb4b9a7a99a35 (patch)
tree3c515abb1b01ea41ea901668763af8853429e5c6
parentc450379ff02edbda5fc6225b8c96634c47c35ce0 (diff)
tar: fix the case where long base names can be ignored
-rw-r--r--archival/libunarchive/get_header_tar.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c
index beaf3087f..9134d6db6 100644
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -211,9 +211,12 @@ char get_header_tar(archive_handle_t *archive_handle)
/* 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]) {