diff options
author | Ravindra Patel <ravindp@microsoft.com> | 2014-11-20 12:07:55 -0500 |
---|---|---|
committer | Ravindra Patel <ravindp@microsoft.com> | 2014-11-21 15:05:34 -0500 |
commit | ec7e680c6c56897bc0881cbcd14c2f1e9ac624c5 (patch) | |
tree | 5cd072ff624adf571e8e568e78bee87afb97641f | |
parent | 7561f98d6d1157eec60d1fcf083c0a91a07cd95d (diff) | |
download | libgit2-ec7e680c6c56897bc0881cbcd14c2f1e9ac624c5.tar.gz |
Fix for misleading "missing delta bases" error - Fix #2721.
-rw-r--r-- | src/indexer.c | 5 | ||||
-rw-r--r-- | src/pack.c | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/indexer.c b/src/indexer.c index 0e682dd6e..8127ff8b0 100644 --- a/src/indexer.c +++ b/src/indexer.c @@ -671,8 +671,10 @@ static int inject_object(git_indexer *idx, git_oid *id) seek_back_trailer(idx); entry_start = idx->pack->mwf.size; - if (git_odb_read(&obj, idx->odb, id) < 0) + if (git_odb_read(&obj, idx->odb, id) < 0) { + giterr_set(GITERR_INDEXER, "missing delta bases"); return -1; + } data = git_odb_object_data(obj); len = git_odb_object_size(obj); @@ -827,7 +829,6 @@ static int resolve_deltas(git_indexer *idx, git_transfer_progress *stats) break; if (!progressed && (fix_thin_pack(idx, stats) < 0)) { - giterr_set(GITERR_INDEXER, "missing delta bases"); return -1; } } diff --git a/src/pack.c b/src/pack.c index 79032381c..df2563101 100644 --- a/src/pack.c +++ b/src/pack.c @@ -408,11 +408,14 @@ static int packfile_unpack_header1( size = c & 15; shift = 4; while (c & 0x80) { - if (len <= used) + if (len <= used) { + giterr_set(GITERR_ODB, "buffer too small"); return GIT_EBUFS; + } if (bitsizeof(long) <= shift) { *usedp = 0; + giterr_set(GITERR_ODB, "packfile corrupted"); return -1; } |