← Commit list

23ffb6a4a

Denis Vlasenko
Denis Vlasenko
2008-02-13
FAILED Duration: 13s

Subject

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

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

archival/libunarchive/get_header_tar.c+9 -1
@@ -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 */