efi: Fix out-of-bounds read in variable_matches()
authorLaszlo Ersek <lersek@redhat.com>
Thu, 21 Apr 2016 16:21:11 +0000 (18:21 +0200)
committerDanny Wood <danwood76@gmail.com>
Tue, 29 Jan 2019 13:12:55 +0000 (13:12 +0000)
commit569affe3f9eec11b192fa92d06668ea8ffa4924b
treecd531e81a3a31ed585b11db909f60203b9237013
parentb95a516848ad8b3987df237cf2f424cb4d020494
efi: Fix out-of-bounds read in variable_matches()

commit 630ba0cc7a6dbafbdee43795617c872b35cde1b4 upstream.

The variable_matches() function can currently read "var_name[len]", for
example when:

 - var_name[0] == 'a',
 - len == 1
 - match_name points to the NUL-terminated string "ab".

This function is supposed to accept "var_name" inputs that are not
NUL-terminated (hence the "len" parameter"). Document the function, and
access "var_name[*match]" only if "*match" is smaller than "len".

Reported-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Cc: Peter Jones <pjones@redhat.com>
Cc: Matthew Garrett <mjg59@coreos.com>
Cc: Jason Andryuk <jandryuk@gmail.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: <stable@vger.kernel.org> # v3.10+
Link: http://thread.gmane.org/gmane.comp.freedesktop.xorg.drivers.intel/86906
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
Signed-off-by: Willy Tarreau <w@1wt.eu>
drivers/firmware/efi/vars.c