summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Vlasov <vsu@altlinux.ru>2005-09-23 12:28:23 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-09-23 21:30:45 (GMT)
commit8be707de55e473a5d850a1fcdc6e30589a37d548 (patch)
tree803fd8b2299dbc3cd8b430c3f9fbed2bd379aeb4
parentd35bbe0b2e3765639c23978783a5319dfad33992 (diff)
downloadgit-8be707de55e473a5d850a1fcdc6e30589a37d548.zip
git-8be707de55e473a5d850a1fcdc6e30589a37d548.tar.gz
git-8be707de55e473a5d850a1fcdc6e30589a37d548.tar.bz2
[PATCH] git-local-fetch: Fix error checking and leak in setup_indices()
setup_indices() did not check the return value of opendir(), and did not have a corresponding closedir() call. Signed-off-by: Sergey Vlasov <vsu@altlinux.ru> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--local-fetch.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/local-fetch.c b/local-fetch.c
index 8176532..b3947a9 100644
--- a/local-fetch.c
+++ b/local-fetch.c
@@ -38,6 +38,8 @@ static int setup_indices(void)
unsigned char sha1[20];
sprintf(filename, "%s/objects/pack/", path);
dir = opendir(filename);
+ if (!dir)
+ return -1;
while ((de = readdir(dir)) != NULL) {
int namelen = strlen(de->d_name);
if (namelen != 50 ||
@@ -46,6 +48,7 @@ static int setup_indices(void)
get_sha1_hex(de->d_name + 5, sha1);
setup_index(sha1);
}
+ closedir(dir);
return 0;
}