Merge branch 'jk/getwholeline-getdelim-empty' into maint
strbuf_getwholeline() did not NUL-terminate the buffer on certain corner cases in its error codepath. * jk/getwholeline-getdelim-empty: strbuf_getwholeline: NUL-terminate getdelim buffer on error
This commit is contained in:
commit
f55f97cb33
8
strbuf.c
8
strbuf.c
@ -481,9 +481,15 @@ int strbuf_getwholeline(struct strbuf *sb, FILE *fp, int term)
|
||||
if (errno == ENOMEM)
|
||||
die("Out of memory, getdelim failed");
|
||||
|
||||
/* Restore slopbuf that we moved out of the way before */
|
||||
/*
|
||||
* Restore strbuf invariants; if getdelim left us with a NULL pointer,
|
||||
* we can just re-init, but otherwise we should make sure that our
|
||||
* length is empty, and that the result is NUL-terminated.
|
||||
*/
|
||||
if (!sb->buf)
|
||||
strbuf_init(sb, 0);
|
||||
else
|
||||
strbuf_reset(sb);
|
||||
return EOF;
|
||||
}
|
||||
#else
|
||||
|
@ -55,6 +55,10 @@ test_expect_success 'empty stream succeeds' '
|
||||
git fast-import </dev/null
|
||||
'
|
||||
|
||||
test_expect_success 'truncated stream complains' '
|
||||
echo "tag foo" | test_must_fail git fast-import
|
||||
'
|
||||
|
||||
test_expect_success 'A: create pack from stdin' '
|
||||
test_tick &&
|
||||
cat >input <<-INPUT_END &&
|
||||
|
Loading…
Reference in New Issue
Block a user