From: Linus Torvalds <torvalds@ppc970.osdl.org>
Date: Sat, 9 Apr 2005 07:25:22 +0000 (-0700)
Subject: Fix missing return values and some error tests for empty index files
X-Git-Tag: v0.99~943
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=59c1e249808c6ba38194733fa00efddb9e0eb488;p=git

Fix missing return values and some error tests for empty index files

Patches from Dave Jones and Ingo Molnar, but since I don't have any
infrastructure in place to use the old patch applicator scripts I
am trying to build up, I ended up fixing the thing by hand instead.

Credit where credit is due, though. Nice to see that people are
taking a look at the project even in this early stage.
---

diff --git a/cache.h b/cache.h
index 864f70bfe5..900824abfa 100644
--- a/cache.h
+++ b/cache.h
@@ -56,7 +56,7 @@ struct cache_entry {
 	unsigned int st_size;
 	unsigned char sha1[20];
 	unsigned short namelen;
-	unsigned char name[0];
+	char name[0];
 };
 
 const char *sha1_file_directory;
diff --git a/fsck-cache.c b/fsck-cache.c
index 0a97566e87..a01513ed4d 100644
--- a/fsck-cache.c
+++ b/fsck-cache.c
@@ -30,6 +30,7 @@ static int fsck_tree(unsigned char *sha1, void *data, unsigned long size)
 		size -= len + 20;
 		mark_needs_sha1(sha1, "blob", file_sha1);
 	}
+	return 0;
 }
 
 static int fsck_commit(unsigned char *sha1, void *data, unsigned long size)
@@ -49,6 +50,7 @@ static int fsck_commit(unsigned char *sha1, void *data, unsigned long size)
 		mark_needs_sha1(sha1, "commit", parent_sha1);
 		data += 7 + 40 + 1; 	/* "parent " + <hex sha1> + '\n' */
 	}
+	return 0;
 }
 
 static int fsck_entry(unsigned char *sha1, char *tag, void *data, unsigned long size)
diff --git a/read-cache.c b/read-cache.c
index 2ede67dbe1..50d0be35e8 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -264,10 +264,9 @@ int read_cache(void)
 	size = 0; // avoid gcc warning
 	map = (void *)-1;
 	if (!fstat(fd, &st)) {
-		map = NULL;
 		size = st.st_size;
 		errno = EINVAL;
-		if (size > sizeof(struct cache_header))
+		if (size >= sizeof(struct cache_header))
 			map = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
 	}
 	close(fd);