Commit 477fedcc authored by Tiago Cogumbreiro's avatar Tiago Cogumbreiro

Fix an out-of bounds read when the element is bigger than the buffer.

Ensure the size of the buffer being checked is bigger than the element
of the buffer being checked. The buffer can be triggered when, for
example, the buffer is of length zero and we are checking for:

    Verify<uoffset_t>(buf_)

The condition above should fail.
parent 5de28c74
...@@ -898,7 +898,7 @@ class Verifier FLATBUFFERS_FINAL_CLASS { ...@@ -898,7 +898,7 @@ class Verifier FLATBUFFERS_FINAL_CLASS {
// Verify any range within the buffer. // Verify any range within the buffer.
bool Verify(const void *elem, size_t elem_len) const { bool Verify(const void *elem, size_t elem_len) const {
return Check(elem >= buf_ && elem <= end_ - elem_len); return Check(elem_len <= (size_t) (end_ - buf_) && elem >= buf_ && elem <= end_ - elem_len);
} }
// Verify a range indicated by sizeof(T). // Verify a range indicated by sizeof(T).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment