Commit d1f13fd2 authored by Chris Wilson's avatar Chris Wilson Committed by Daniel Vetter

drm/i915: Validate BDB section before reading

Make sure that the whole BDB section is within the MMIO region prior to
accessing it contents. That we don't read outside of the secion is left
up to the individual section parsers.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@gmail.com>
Reviewed-by: default avatarShobhit Kumar <shobhit.kumar@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent c6df39b5
...@@ -49,13 +49,19 @@ find_section(struct bdb_header *bdb, int section_id) ...@@ -49,13 +49,19 @@ find_section(struct bdb_header *bdb, int section_id)
total = bdb->bdb_size; total = bdb->bdb_size;
/* walk the sections looking for section_id */ /* walk the sections looking for section_id */
while (index < total) { while (index + 3 < total) {
current_id = *(base + index); current_id = *(base + index);
index++; index++;
current_size = *((u16 *)(base + index)); current_size = *((u16 *)(base + index));
index += 2; index += 2;
if (index + current_size > total)
return NULL;
if (current_id == section_id) if (current_id == section_id)
return base + index; return base + index;
index += current_size; index += current_size;
} }
......
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