summaryrefslogtreecommitdiff
path: root/src/odb_loose.c
diff options
context:
space:
mode:
authorSergey Nikishin <nordsturm@yandex-team.ru>2011-04-22 17:36:28 +0400
committerSergey Nikishin <nordsturm@yandex-team.ru>2011-04-22 17:41:36 +0400
commita3ced63792b570b7a5927f6a75cf996233b9f3aa (patch)
tree2c7922b7f879806b5a4145f4feecb565d1542b1f /src/odb_loose.c
parent6b290755ea409485dc066106ecdfdd3ce855a759 (diff)
downloadlibgit2-a3ced63792b570b7a5927f6a75cf996233b9f3aa.tar.gz
Fix going into infinite loop in read_header_loose()
read_header_loose causes infinite loop on this file: $ cat ../libcppgit/bin/sample-repo/test_mailbox/.git/objects/8f/e274605cbc740a2a957f44b2722a8a73915a09 | base64 eAErKUpNVTAzYzA0MDAzMVHISUxKzSlmWLgkuyN5+rxr6juMPR2EmN8s7Vl9D6oiN7UkkcHJdLbl 7Z3N/oxfE0W8wrSbuFRkAwDFfBn1
Diffstat (limited to 'src/odb_loose.c')
-rw-r--r--src/odb_loose.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/odb_loose.c b/src/odb_loose.c
index 8ee01cd2c..4f475f2c3 100644
--- a/src/odb_loose.c
+++ b/src/odb_loose.c
@@ -434,6 +434,9 @@ static int read_header_loose(git_rawobj *out, const char *loc)
if ((read_bytes = read(fd, raw_buffer, sizeof(raw_buffer))) > 0) {
set_stream_input(&zs, raw_buffer, read_bytes);
z_return = inflate(&zs, 0);
+ } else {
+ z_return = Z_STREAM_END;
+ break;
}
} while (z_return == Z_OK);