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)
|
if (errno == ENOMEM)
|
||||||
die("Out of memory, getdelim failed");
|
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)
|
if (!sb->buf)
|
||||||
strbuf_init(sb, 0);
|
strbuf_init(sb, 0);
|
||||||
|
else
|
||||||
|
strbuf_reset(sb);
|
||||||
return EOF;
|
return EOF;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@ -55,6 +55,10 @@ test_expect_success 'empty stream succeeds' '
|
|||||||
git fast-import </dev/null
|
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_expect_success 'A: create pack from stdin' '
|
||||||
test_tick &&
|
test_tick &&
|
||||||
cat >input <<-INPUT_END &&
|
cat >input <<-INPUT_END &&
|
||||||
|
Loading…
Reference in New Issue
Block a user