On Sat, Aug 11, 2018 at 05:39:27PM +0200, René Scharfe wrote:
> The char array named "buffer" is unlikely to contain a NUL character, so
> printing its contents using %s in a die() format is unsafe. Clang's
> ASan reports running over the end of buffer in the recently added
> skiplist tests in t5504-fetch-receive-strict.sh as a result.
>
> Use an idiomatic strbuf_getline() loop instead, which ensures the buffer
> is always NUL-terminated. As a side-effect this also adds support for
> skiplist files with CRLF line endings.
Nice. Two other side effects, both of which I think are good:
- this is likely faster for a large skiplist due to fewer syscalls
- this will no longer complain about a sha1 with a missing newline at
the end-of-file (it will quietly handle it as if the newline were
there)
And one I'm not sure about:
- a read() error will now be quietly ignored; I guess we'd have to
check ferror(fp) to cover this. I'm not sure if it matters.
> fsck.c | 23 ++-
> 1 file changed, 10 insertions(+), 13 deletions(-)
Code itself looks good to me (assuming we don't care about the read()
error thing).
-Peff