summaryrefslogtreecommitdiff
path: root/read-cache.c
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2019-04-13 01:54:02 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2019-04-15 14:00:51 +0900
commit533ddba47e8cc36a6ec2864f482a8e540465eb64 (patch)
treee356d9c18e8b8bb878c128acc332993988fa39dd /read-cache.c
parentupload-pack: send ERR packet for non-tip objects (diff)
downloadtgif-533ddba47e8cc36a6ec2864f482a8e540465eb64.tar.xz
pkt-line: prepare buffer before handling ERR packets
Since 2d103c31c2 (pack-protocol.txt: accept error packets in any context, 2018-12-29), the pktline code will detect an ERR packet and die automatically, saving the caller from dealing with it. But we do so too early in the function, before we have terminated the buffer with a NUL. As a result, passing the ERR message to die() may result in us printing random cruft from a previous packet. This doesn't trigger memory tools like ASan because we reuse the same buffer over and over (so the contents are valid and initialized; they're just stale). We can see demonstrate this by tightening the regex we use to match the error message in t5516; without this patch, git-fetch will accidentally print the capabilities from the (much longer) initial packet we received. By moving the ERR code later in the function we get a few other benefits, too: - we'll now chomp any newline sent by the other side (which is what we want, since die() will add its own newline) - we'll now mention the ERR packet with GIT_TRACE_PACKET Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'read-cache.c')
0 files changed, 0 insertions, 0 deletions