tar: compat: handle tarballs with only one zero block at the end
No binary (build failed)
—
(log yok)
| @@ -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 */ | |