summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRavindra Patel <ravindp@microsoft.com>2014-11-20 12:07:55 -0500
committerRavindra Patel <ravindp@microsoft.com>2014-11-21 15:05:34 -0500
commitec7e680c6c56897bc0881cbcd14c2f1e9ac624c5 (patch)
tree5cd072ff624adf571e8e568e78bee87afb97641f
parent7561f98d6d1157eec60d1fcf083c0a91a07cd95d (diff)
downloadlibgit2-ec7e680c6c56897bc0881cbcd14c2f1e9ac624c5.tar.gz
Fix for misleading "missing delta bases" error - Fix #2721.
-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;
}