Fix bug in bounds check when parsing
This commit is contained in:
parent
182f33f8ae
commit
b1c5732fc8
1 changed files with 2 additions and 2 deletions
|
@ -133,7 +133,7 @@ static std::uint8_t const * decode(
|
||||||
std::uint8_t const * len_start = pos;
|
std::uint8_t const * len_start = pos;
|
||||||
pos = varint_skip(pos, end);
|
pos = varint_skip(pos, end);
|
||||||
std::size_t len = varint_decode<std::size_t>(len_start, pos);
|
std::size_t len = varint_decode<std::size_t>(len_start, pos);
|
||||||
if (len + pos > end) return end;
|
if (len > std::size_t(end - pos)) return end;
|
||||||
value = pos;
|
value = pos;
|
||||||
value_length = len;
|
value_length = len;
|
||||||
pos += len;
|
pos += len;
|
||||||
|
@ -154,7 +154,7 @@ static std::uint8_t const * skip_unknown(
|
||||||
std::uint8_t const * len_start = pos;
|
std::uint8_t const * len_start = pos;
|
||||||
pos = varint_skip(pos, end);
|
pos = varint_skip(pos, end);
|
||||||
std::size_t len = varint_decode<std::size_t>(len_start, pos);
|
std::size_t len = varint_decode<std::size_t>(len_start, pos);
|
||||||
if (len + pos > end) return end;
|
if (len > std::size_t(end - pos)) return end;
|
||||||
pos += len;
|
pos += len;
|
||||||
} else {
|
} else {
|
||||||
return end;
|
return end;
|
||||||
|
|
Loading…
Reference in a new issue