summaryrefslogtreecommitdiff
path: root/sha1_file.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2007-05-30 17:32:19 (GMT)
committerJunio C Hamano <junkio@cox.net>2007-05-30 22:01:37 (GMT)
commit192a6be2a77ab3bf446237fdf6575b0aca863d9e (patch)
tree8ee58b598b0abffe78dcf16385320c53b74f4f52 /sha1_file.c
parent7faf068660f0a060066ccbc80f7debbba6bc2d76 (diff)
downloadgit-192a6be2a77ab3bf446237fdf6575b0aca863d9e.zip
git-192a6be2a77ab3bf446237fdf6575b0aca863d9e.tar.gz
git-192a6be2a77ab3bf446237fdf6575b0aca863d9e.tar.bz2
fix signed range problems with hex conversions
Make hexval_table[] "const". Also make sure that the accessor function hexval() does not access the table with out-of-range values by declaring its parameter "unsigned char", instead of "unsigned int". With this, gcc can just generate: movzbl (%rdi), %eax movsbl hexval_table(%rax),%edx movzbl 1(%rdi), %eax movsbl hexval_table(%rax),%eax sall $4, %edx orl %eax, %edx for the code to generate a byte from two hex characters. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'sha1_file.c')
-rw-r--r--sha1_file.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c
index 5234170..ae9bd1f 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -32,7 +32,7 @@ const unsigned char null_sha1[20];
static unsigned int sha1_file_open_flag = O_NOATIME;
-signed char hexval_table[256] = {
+const signed char hexval_table[256] = {
-1, -1, -1, -1, -1, -1, -1, -1, /* 00-07 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 08-0f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 10-17 */