summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2014-11-22 18:39:50 +0100
committerCarlos Martín Nieto <cmn@dwim.me>2014-11-22 18:39:50 +0100
commite06b1040d703b4489f8280674e59b5245595c586 (patch)
tree678418f18487994f0b46bedb1eaeeaef8ecc7ef1
parente0482934e6187b2e76c0e44960bcbd3ce3795d0c (diff)
parentec7e680c6c56897bc0881cbcd14c2f1e9ac624c5 (diff)
downloadlibgit2-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.c5
-rw-r--r--src/pack.c5
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;
}