tar: fix the case where long base names can be ignored
authorDenis Vlasenko <vda.linux@googlemail.com>
Tue, 29 Apr 2008 03:54:16 +0000 (03:54 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Tue, 29 Apr 2008 03:54:16 +0000 (03:54 -0000)
archival/libunarchive/get_header_tar.c

index beaf3087f9589603c585a13d55793b1cef2b71af..9134d6db607aac0797270f9d99027be8015cf095 100644 (file)
@@ -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]) {