summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2017-07-08 10:58:42 +0200
committerJunio C Hamano <gitster@pobox.com>2017-07-09 09:30:42 -0700
commit2d105451c0768fc3e9600dec7bca2376f482521e (patch)
tree0e2c16b5b521193e49acdde21f9c9cac25a1da7b
parent8bc172e5f29894d440aab772ae3a49eb2eaf5585 (diff)
downloadgit-rs/apply-avoid-over-reading.tar.gz
apply: use strcmp(3) for comparing strings in gitdiff_verify_name()rs/apply-avoid-over-reading
We don't know the length of the C string "another". It could be shorter than "name", which we compare it to using memchr(3). Call strcmp(3) instead to avoid running over the end of the former, and get rid of a strlen(3) call as a bonus. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--apply.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/apply.c b/apply.c
index 4024e70c54..58ffe1b764 100644
--- a/apply.c
+++ b/apply.c
@@ -956,13 +956,12 @@ static int gitdiff_verify_name(struct apply_state *state,
}
if (*name) {
- int len = strlen(*name);
char *another;
if (isnull)
return error(_("git apply: bad git-diff - expected /dev/null, got %s on line %d"),
*name, state->linenr);
another = find_name(state, line, NULL, state->p_value, TERM_TAB);
- if (!another || memcmp(another, *name, len + 1)) {
+ if (!another || strcmp(another, *name)) {
free(another);
return error((side == DIFF_NEW_NAME) ?
_("git apply: bad git-diff - inconsistent new filename on line %d") :