diff options
author | René Scharfe <l.s.r@web.de> | 2016-09-03 17:59:20 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-09-07 10:42:46 -0700 |
commit | d23309733a5b2a9e1adc304ee50c5a5ed7a087c2 (patch) | |
tree | c1555e8fce5bdf708b48fb43391c98002dcd3716 /hex.c | |
parent | e0c1ceafc5bece92d35773a75fff59497e1d9bd5 (diff) | |
download | git-d23309733a5b2a9e1adc304ee50c5a5ed7a087c2.tar.gz |
introduce hex2chr() for converting two hexadecimal digits to a characterrs/hex2chr
Add and use a helper function that decodes the char value of two
hexadecimal digits. It returns a negative number on error, avoids
running over the end of the given string and doesn't shift negative
values.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'hex.c')
-rw-r--r-- | hex.c | 12 |
1 files changed, 2 insertions, 10 deletions
@@ -39,16 +39,8 @@ int get_sha1_hex(const char *hex, unsigned char *sha1) { int i; for (i = 0; i < GIT_SHA1_RAWSZ; i++) { - 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) + int val = hex2chr(hex); + if (val < 0) return -1; *sha1++ = val; hex += 2; |