diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2014-11-22 18:39:50 +0100 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2014-11-22 18:39:50 +0100 |
commit | e06b1040d703b4489f8280674e59b5245595c586 (patch) | |
tree | 678418f18487994f0b46bedb1eaeeaef8ecc7ef1 | |
parent | e0482934e6187b2e76c0e44960bcbd3ce3795d0c (diff) | |
parent | ec7e680c6c56897bc0881cbcd14c2f1e9ac624c5 (diff) | |
download | libgit2-e06b1040d703b4489f8280674e59b5245595c586.tar.gz |
Merge pull request #2723 from ravindp/ravindp/fix_4_missing_delta_bases
Fix for misleading "missing delta bases" error.
-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; } |