]> git.eshelyaron.com Git - emacs.git/commit
Fix tar-mode reading the oldgnu Tar format
authorEli Zaretskii <eliz@gnu.org>
Mon, 30 Dec 2019 16:17:03 +0000 (18:17 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 30 Dec 2019 16:17:03 +0000 (18:17 +0200)
commit59f71d20eade09e6c2ef99fc4d9b99a161bff040
tree6523dd1296d9dafdba473b05ea4f38f44d1cf41a
parente3ec84fd7d91c9fff756e28d14ce33f7a37ac19f
Fix tar-mode reading the oldgnu Tar format

This makes sure an entry for a long file name will not
accidentally appear as a directory, and thus its size will be
disregarded, causing corrupted file headers for all the subsequent
entries.  The original problem happened because the long file name
truncated to 99 bytes happened to end in a slash, which tar-mode
takes to be the indication of a directory.
* lisp/tar-mode.el (tar-header-block-tokenize): Accept an
additional argument DISABLE-SLASH; if non-nil, don't set the
link-type field of the descriptor to 5 (meaning a directory) just
because the name ends in a slash.  Use this argument when calling
itself recursively, to read the entry of the file with a long
name.  Set the link-type to 5 if the long name ends in a slash.
(Bug#38777)
lisp/tar-mode.el