summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Linus Torvalds <torvalds@ppc970.osdl.org>2005-04-09 00:25:22 -0700
committerLibravatar Linus Torvalds <torvalds@ppc970.osdl.org>2005-04-09 00:25:22 -0700
commit59c1e249808c6ba38194733fa00efddb9e0eb488 (patch)
tree8bd5667ce5588ab02c103c9aa8d8f1c6e90da56f
parentMake fsck-cache start parsing the object types, and checking their (diff)
downloadtgif-59c1e249808c6ba38194733fa00efddb9e0eb488.tar.xz
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.
-rw-r--r--cache.h2
-rw-r--r--fsck-cache.c2
-rw-r--r--read-cache.c3
3 files changed, 4 insertions, 3 deletions
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);