glsl/blob: Return false from ensure_can_read on overrun

Otherwise, if you have a large read fail and then try to do a small
read, the small read may succeed even though it's at the wrong offset.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit 7118851374)
This commit is contained in:
Jason Ekstrand 2017-10-11 10:56:48 -07:00 committed by Emil Velikov
parent d56aa9fe43
commit 4d1ae3283c

View file

@ -207,6 +207,9 @@ blob_reader_init(struct blob_reader *blob, uint8_t *data, size_t size)
static bool
ensure_can_read(struct blob_reader *blob, size_t size)
{
if (blob->overrun)
return false;
if (blob->current < blob->end && blob->end - blob->current >= size)
return true;