mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
apply: carefully strdup a possibly-NULL name
2901bbe
(apply: free patch->{def,old,new}_name fields, 2012-03-21)
cleaned up the memory management of filenames in the patches, but
forgot that find_name_traditional() can return NULL as a way of saying
"I couldn't find a name".
That NULL unfortunately gets passed into xstrdup() next, resulting in
a segfault. Use null_strdup() so as to safely propagate the null,
which will let us emit the correct error message.
Reported-by: DevHC on #git
Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0ce2e396ee
commit
212eb96a96
|
@ -898,7 +898,7 @@ static void parse_traditional_patch(const char *first, const char *second, struc
|
||||||
patch->old_name = name;
|
patch->old_name = name;
|
||||||
} else {
|
} else {
|
||||||
patch->old_name = name;
|
patch->old_name = name;
|
||||||
patch->new_name = xstrdup(name);
|
patch->new_name = null_strdup(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!name)
|
if (!name)
|
||||||
|
|
|
@ -86,6 +86,20 @@ test_expect_success 'apply --index from subdir of toplevel' '
|
||||||
test_cmp expected sub/dir/file
|
test_cmp expected sub/dir/file
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'apply half-broken patch from subdir of toplevel' '
|
||||||
|
(
|
||||||
|
cd sub/dir &&
|
||||||
|
test_must_fail git apply <<-EOF
|
||||||
|
--- sub/dir/file
|
||||||
|
+++ sub/dir/file
|
||||||
|
@@ -1,0 +1,0 @@
|
||||||
|
--- file_in_root
|
||||||
|
+++ file_in_root
|
||||||
|
@@ -1,0 +1,0 @@
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'apply from .git dir' '
|
test_expect_success 'apply from .git dir' '
|
||||||
cp postimage expected &&
|
cp postimage expected &&
|
||||||
cp preimage .git/file &&
|
cp preimage .git/file &&
|
||||||
|
|
Loading…
Reference in a new issue