Don't leak temporary file on failed multi-file ed-style patch
The previous fix worked fine with single-file ed-style patches, but would still leak temporary files in the case of multi-file ed-style patch. Fix that case as well, and extend the test case to check for it. * src/patch.c (main): Unlink TMPEDNAME if needed before moving to the next file in a patch. This closes bug #53820: https://savannah.gnu.org/bugs/index.php?53820 Fixes: 123eaff0d5d1 ("Fix arbitrary command execution in ed-style patches (CVE-2018-1000156)") Fixes: 19599883ffb6 ("Don't leak temporary file on failed ed-style patch") Gbp-Pq: Name 0007-Do_not_leak_temporary_file_on_failed_multi-file.patch
This commit is contained in:
parent
5ee73250df
commit
c3fb4c48e5
|
@ -236,6 +236,7 @@ main (int argc, char **argv)
|
|||
}
|
||||
remove_if_needed (TMPOUTNAME, &TMPOUTNAME_needs_removal);
|
||||
}
|
||||
remove_if_needed (TMPEDNAME, &TMPEDNAME_needs_removal);
|
||||
|
||||
if (! skip_rest_of_patch && ! file_type)
|
||||
{
|
||||
|
|
|
@ -38,3 +38,34 @@ EOF
|
|||
check 'cat foo' <<EOF
|
||||
foo
|
||||
EOF
|
||||
|
||||
# Test the case where one ed-style patch modifies several files
|
||||
|
||||
cat > ed3.diff <<EOF
|
||||
--- foo
|
||||
+++ foo
|
||||
1c
|
||||
bar
|
||||
.
|
||||
--- baz
|
||||
+++ baz
|
||||
0a
|
||||
baz
|
||||
.
|
||||
EOF
|
||||
|
||||
# Apparently we can't create a file with such a patch, while it works fine
|
||||
# when the file name is provided on the command line
|
||||
cat > baz <<EOF
|
||||
EOF
|
||||
|
||||
check 'patch -e -i ed3.diff' <<EOF
|
||||
EOF
|
||||
|
||||
check 'cat foo' <<EOF
|
||||
bar
|
||||
EOF
|
||||
|
||||
check 'cat baz' <<EOF
|
||||
baz
|
||||
EOF
|
||||
|
|
Loading…
Reference in New Issue