tar: compat: handle tarballs with only one zero block at the end

This commit is contained in:
Denis Vlasenko 2008-02-13 17:52:42 +00:00
parent 6dd03f04ea
commit 23ffb6a4a2

View File

@ -90,7 +90,15 @@ char get_header_tar(archive_handle_t *archive_handle)
again_after_align:
xread(archive_handle->src_fd, &tar, 512);
i = full_read(archive_handle->src_fd, &tar, 512);
/* if GNU tar sees EOF in above read, it says:
* "tar: A lone zero block at N", where N = kilobyte
* where EOF was met (not EOF block, actual EOF!),
* and tar will exit with error code 0! Mimic exit(0): */
if (i == 0)
xfunc_error_retval = 0;
if (i != 512)
bb_error_msg_and_die("short read");
archive_handle->offset += 512;
/* If there is no filename its an empty header */