summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Koegler <martin.koegler@chello.at>2017-08-16 22:16:22 +0200
committerJunio C Hamano <gitster@pobox.com>2017-08-16 21:04:51 -0700
commit6e37fe34dc77cd18c1b9d9a150eab9549a779fcc (patch)
treef4d5bd0d1c7a741434dae612d9ff34f5e9cfec9f
parent88c499273db5833f0754139f472096aaa7c64afc (diff)
downloadgit-6e37fe34dc77cd18c1b9d9a150eab9549a779fcc.tar.gz
Add overflow check to get_delta_hdr_size
Signed-off-by: Martin Koegler <martin.koegler@chello.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--delta.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/delta.h b/delta.h
index 2df0f5552b..dab7352591 100644
--- a/delta.h
+++ b/delta.h
@@ -96,6 +96,11 @@ static inline size_t get_delta_hdr_size(const unsigned char **datap,
cmd = *data++;
size |= (cmd & 0x7f) << i;
i += 7;
+ if (bitsizeof(size_t) <= i) {
+ die("too large object size");
+ size = 0;
+ break;
+ }
} while (cmd & 0x80 && data < top);
*datap = data;
return size;