diff options
author | Linus Torvalds <torvalds@osdl.org> | 2005-07-26 20:04:22 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-07-26 22:23:18 -0700 |
commit | bdf25142aaac016f4d992001f336d53ab4fbc75e (patch) | |
tree | 41d575f73b853d02144086a55f643fe037a49b97 /send-pack.c | |
parent | 2779fad61302da0fe3a24995e343ab894f32fa42 (diff) | |
download | git-bdf25142aaac016f4d992001f336d53ab4fbc75e.tar.gz |
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.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/send-pack.c b/send-pack.c index 2a7ab2d2b9..9b4be6130c 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; } |