[PATCH 2/2] range-diff: avoid negative string precision
- From
Vasil Dimov via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Apr 15, 2020, 14:28 UTC
- Message-ID
- <b3384880c7201d65adb7341ce23386d578e69193.1586960921.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.760.git.git.1586960921.gitgitgadget@gmail.com>
From: Vasil Dimov <vd@FreeBSD.org>
If the supplied integer for "precisoin" is negative in `"%.*s", len, line` then it is ignored. So the current code is equivalent to just `"%s", line` because it is executed only if `len` is negative.
Fix this by saving the value of `len` before overwriting it with the return value of `parse_git_diff_header()`.
Signed-off-by: Vasil Dimov <vd@FreeBSD.org> --- range-diff.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/range-diff.c b/range-diff.c index 5cc920be391..40af0862818 100644 --- a/range-diff.c +++ b/range-diff.c @@ -123,16 +123,19 @@ static int read_patches(const char *range, struct string_list *list, struct patch patch = { 0 }; struct strbuf root = STRBUF_INIT; int linenr = 0; + int orig_len; in_header = 0; strbuf_addch(&buf, '\n'); if (!util->diff_offset) util->diff_offset = buf.len; line[len - 1] = '\n'; + orig_len = len; len = parse_git_diff_header(&root, &linenr, 0, line, len, size, &patch); if (len < 0) - die(_("could not parse git header '%.*s'"), (int)len, line); + die(_("could not parse git header '%.*s'"), + orig_len, line); strbuf_addstr(&buf, " ## "); if (patch.is_new > 0) strbuf_addf(&buf, "%s (new)", patch.new_name);
-- gitgitgadget