summaryrefslogtreecommitdiff
path: root/send-pack.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@osdl.org>2005-07-27 03:04:22 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-07-27 05:23:18 (GMT)
commitbdf25142aaac016f4d992001f336d53ab4fbc75e (patch)
tree41d575f73b853d02144086a55f643fe037a49b97 /send-pack.c
parent2779fad61302da0fe3a24995e343ab894f32fa42 (diff)
downloadgit-bdf25142aaac016f4d992001f336d53ab4fbc75e.zip
git-bdf25142aaac016f4d992001f336d53ab4fbc75e.tar.gz
git-bdf25142aaac016f4d992001f336d53ab4fbc75e.tar.bz2
Fix potential send-pack SIGSEGV
The check that the source is ahead of the destination incorrectly expects pop_most_recent_commit() to gracefully handle an empty list. Fix by just checking the list itself, rather than the return value of the pop function. [jc: I did the test script that demonstrated the problem] Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'send-pack.c')
-rw-r--r--send-pack.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/send-pack.c b/send-pack.c
index 2a7ab2d..9b4be61 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -134,7 +134,8 @@ static int ref_newer(const unsigned char *new_sha1, const unsigned char *old_sha
return 0;
list = NULL;
commit_list_insert(new, &list);
- while ((new = pop_most_recent_commit(&list, 1)) != NULL) {
+ while (list) {
+ new = pop_most_recent_commit(&list, 1);
if (new == old)
return 1;
}