Re: [PATCH 02/13] declare overflow during base128 decoding when 1 MSB nonzero, not 7
"Dana How" <danahow@gmail.com> writes:
Show 22 quoted lines
> 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?