From: Junio C Hamano Date: Wed, 25 Feb 2015 23:40:16 +0000 (-0800) Subject: Merge branch 'sb/hex-object-name-is-at-most-41-bytes-long' X-Git-Tag: v2.4.0-rc0~86 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/4f5a4271ea3657ea79de4ccef20c29619c36d1c1?hp=-c Merge branch 'sb/hex-object-name-is-at-most-41-bytes-long' Code clean-up. * sb/hex-object-name-is-at-most-41-bytes-long: hex.c: reduce memory footprint of sha1_to_hex static buffers --- 4f5a4271ea3657ea79de4ccef20c29619c36d1c1 diff --combined hex.c index 9ebc050637,9ec5a3b325..cfd9d722fd --- a/hex.c +++ b/hex.c @@@ -39,15 -39,7 +39,15 @@@ int get_sha1_hex(const char *hex, unsig { int i; for (i = 0; i < 20; i++) { - unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]); + unsigned int val; + /* + * hex[1]=='\0' is caught when val is checked below, + * but if hex[0] is NUL we have to avoid reading + * past the end of the string: + */ + if (!hex[0]) + return -1; + val = (hexval(hex[0]) << 4) | hexval(hex[1]); if (val & ~0xff) return -1; *sha1++ = val; @@@ -59,7 -51,7 +59,7 @@@ char *sha1_to_hex(const unsigned char *sha1) { static int bufno; - static char hexbuffer[4][50]; + static char hexbuffer[4][41]; static const char hex[] = "0123456789abcdef"; char *buffer = hexbuffer[3 & ++bufno], *buf = buffer; int i;