diff options
author | Vicent Martà <vicent@github.com> | 2013-01-21 15:09:38 -0800 |
---|---|---|
committer | Vicent Martà <vicent@github.com> | 2013-01-21 15:09:38 -0800 |
commit | fad251ae02b108ebe83bde3b2948bb7344825437 (patch) | |
tree | e5dca79929bb0b04a1edd6cfdbd2acdf8d2b177e | |
parent | 4c723a32f765bf4dc1988a48351890f084e13fe5 (diff) | |
parent | 28b1cdf3a1bdcd37cf9d550c92b8c19b1782ea6b (diff) | |
download | libgit2-fad251ae02b108ebe83bde3b2948bb7344825437.tar.gz |
Merge pull request #1267 from libgit2/no-newline
Handle packed peeled objects without trailing newlines
-rw-r--r-- | src/refs.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/refs.c b/src/refs.c index 4934a0309..4ecc628ee 100644 --- a/src/refs.c +++ b/src/refs.c @@ -328,7 +328,7 @@ static int packed_parse_peel( if (git__prefixcmp(tag_ref->name, GIT_REFS_TAGS_DIR) != 0) goto corrupt; - if (buffer + GIT_OID_HEXSZ >= buffer_end) + if (buffer + GIT_OID_HEXSZ > buffer_end) goto corrupt; /* Is this a valid object id? */ @@ -339,10 +339,13 @@ static int packed_parse_peel( if (*buffer == '\r') buffer++; - if (*buffer != '\n') + if (*buffer == '\n') + buffer++; + + if (buffer != buffer_end) goto corrupt; - *buffer_out = buffer + 1; + *buffer_out = buffer; return 0; corrupt: |