diff options
author | René Scharfe <l.s.r@web.de> | 2017-06-27 19:03:30 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-06-27 10:58:30 -0700 |
commit | 4269974179ff4fc2a970c972330ba5b7f26a323b (patch) | |
tree | 86b9aa02c0176cf03b2aab35eff21c586c897d5c /apply.c | |
parent | 773e3a2e0226cffac6c813c2d3bea5ba480675d8 (diff) | |
download | git-4269974179ff4fc2a970c972330ba5b7f26a323b.tar.gz |
apply: check git diffs for missing old filenames
2c93286a (fix "git apply --index ..." not to deref NULL) added a check
for git patches missing a +++ line, preventing a segfault. Check for
missing --- lines as well, and add a test for each case.
Found by Vegard Nossum using AFL.
Original-patch-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'apply.c')
-rw-r--r-- | apply.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -1585,7 +1585,8 @@ static int find_header(struct apply_state *state, patch->old_name = xstrdup(patch->def_name); patch->new_name = xstrdup(patch->def_name); } - if (!patch->is_delete && !patch->new_name) { + if ((!patch->new_name && !patch->is_delete) || + (!patch->old_name && !patch->is_new)) { error(_("git diff header lacks filename information " "(line %d)"), state->linenr); return -128; |