Package: tar Version: 1.22-1 Severity: grave tar is not longer able to read tar files with some garbage at the end under some condition. If it is called from the shell, the resulting SIGPIPE kills the called bzip2 process and tar swallows the error:
| close(3) = 0 | waitpid(18165, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGPIPE}], 0) = 18165 | --- SIGCHLD (Child exited) @ 0 (0) --- | [...] | exit_group(0) = ? In the other case I call it via a python script. The python interpreter collects SIGPIPE by default and the setting is persistent in the child processes. So the SIGPIPE is now collected by bzip2 and converted into an error: | write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = -1 EPIPE (Broken pipe) | --- SIGPIPE (Broken pipe) @ 0 (0) --- | [...] | exit_group(1) = ? | close(3) = 0 | waitpid(18105, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0) = 18105 | --- SIGCHLD (Child exited) @ 0 (0) --- | [...] | exit_group(2) = ? | bzip2: I/O or other error, bailing out. Possible reason follows. | bzip2: Broken pipe | Input file = (stdin), output file = (stdout) | tar: Child returned status 1 | tar: Exiting with failure status due to previous errors It seems that tar now relies on the behaviour that SIGPIPE kills the child and therfor needs to properly set it up. Bastian -- You're too beautiful to ignore. Too much woman. -- Kirk to Yeoman Rand, "The Enemy Within", stardate unknown
signature.asc
Description: Digital signature