From f4a11066cfb70c49fddbca7f95aa0fedcee53cca Mon Sep 17 00:00:00 2001 From: Pavel Roskin Date: Wed, 21 Dec 2005 18:47:09 -0500 Subject: sanity check in add_packed_git() add_packed_git() tries to get the pack SHA1 by parsing its name. It may access uninitialized memory for packs with short names. Signed-off-by: Pavel Roskin Signed-off-by: Junio C Hamano --- sha1_file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sha1_file.c') diff --git a/sha1_file.c b/sha1_file.c index fa22e9c71a..d83d8240d0 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -464,7 +464,7 @@ struct packed_git *add_packed_git(char *path, int path_len, int local) p->pack_last_used = 0; p->pack_use_cnt = 0; p->pack_local = local; - if (!get_sha1_hex(path + path_len - 40 - 4, sha1)) + if ((path_len > 44) && !get_sha1_hex(path + path_len - 44, sha1)) memcpy(p->sha1, sha1, 20); return p; } -- cgit v1.2.3 From 7246ed438c541650c2cd50e4e98b43226f60da0c Mon Sep 17 00:00:00 2001 From: Alex Riesen Date: Thu, 15 Dec 2005 08:47:30 +0100 Subject: \n usage in stderr output fprintf and die sometimes have missing/excessive "\n" in their arguments, correct the strings where I think it would be appropriate. Signed-off-by: Alex Riesen Signed-off-by: Junio C Hamano --- sha1_file.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'sha1_file.c') diff --git a/sha1_file.c b/sha1_file.c index d83d8240d0..601147351d 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1274,7 +1274,7 @@ int move_temp_to_file(const char *tmpfile, char *filename) unlink(tmpfile); if (ret) { if (ret != EEXIST) { - fprintf(stderr, "unable to write sha1 filename %s: %s", filename, strerror(ret)); + fprintf(stderr, "unable to write sha1 filename %s: %s\n", filename, strerror(ret)); return -1; } /* FIXME!!! Collision check here ? */ @@ -1313,7 +1313,7 @@ int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned cha } if (errno != ENOENT) { - fprintf(stderr, "sha1 file %s: %s", filename, strerror(errno)); + fprintf(stderr, "sha1 file %s: %s\n", filename, strerror(errno)); return -1; } @@ -1321,7 +1321,7 @@ int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned cha fd = mkstemp(tmpfile); if (fd < 0) { - fprintf(stderr, "unable to create temporary sha1 filename %s: %s", tmpfile, strerror(errno)); + fprintf(stderr, "unable to create temporary sha1 filename %s: %s\n", tmpfile, strerror(errno)); return -1; } @@ -1410,7 +1410,7 @@ int write_sha1_to_fd(int fd, const unsigned char *sha1) size = write(fd, buf + posn, objsize - posn); if (size <= 0) { if (!size) { - fprintf(stderr, "write closed"); + fprintf(stderr, "write closed\n"); } else { perror("write "); } -- cgit v1.2.3 From 1e80e0449248edb77b0fb9853f4a3404a599e207 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 22 Dec 2005 18:55:59 +0100 Subject: sha1_to_hex: properly terminate the SHA1 sha1_to_hex() returns a pointer to a static buffer. Some of its users modify that buffer by appending a newline character. Other users rely on the fact that you can call printf("%s", sha1_to_hex(sha1)); Just to be on the safe side, terminate the SHA1 in sha1_to_hex(). Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- sha1_file.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'sha1_file.c') diff --git a/sha1_file.c b/sha1_file.c index 601147351d..d451a94efe 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -81,6 +81,8 @@ char * sha1_to_hex(const unsigned char *sha1) *buf++ = hex[val >> 4]; *buf++ = hex[val & 0xf]; } + *buf = '\0'; + return buffer; } -- cgit v1.2.3