Re: [PATCH 02/13] declare overflow during base128 decoding when 1 MSB nonzero, not 7
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:03
"Dana How" [off-list ref] writes:
quoted hunk
Subject: [PATCH 02/13] declare overflow during base128 decoding when 1 MSB nonzero, not 7 --- builtin-pack-objects.c | 2 +- builtin-unpack-objects.c | 2 +- index-pack.c | 2 +- sha1_file.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index b5f9648..50246e1 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c@@ -1014,7 +1014,7 @@ static void check_object(struct object_entry *entry) ofs = c & 127; while (c & 128) { ofs += 1; - if (!ofs || ofs & ~(~0UL >> 7)) + if (!ofs || ofs & ~(~0UL >> 1)) die("delta base offset overflow in pack for %s", sha1_to_hex(entry->sha1)); c = buf[used_0++];
The line after these context does this: ofs = (ofs << 7) + (c & 127); If you do not check the top 7 bits, wouldn't you miss overflow?