efifb: prevent null-deref when iterating dmi_list
The dmi_list array is initialized using gnu designated initializers, and therefore may contain fewer explicitly defined entries as there are elements in it. This is because the enum above with M_xyz constants contains more items than the designated initializer. Those elements not explicitly initialized are implicitly set to 0. Now efifb_setup() loops through all these array elements, and performs a strcmp on each item. For non explicitly initialized elements this will be a null pointer: This patch swaps the check order in the if statement, thus checks first whether dmi_list[i].base is null. Signed-off-by: James Bates <james.h.bates@gmail.com> Signed-off-by: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
e8ddb0cfa1
commit
55aa42f2e6
1 changed files with 2 additions and 2 deletions
|
@ -108,8 +108,8 @@ static int efifb_setup(char *options)
|
|||
if (!*this_opt) continue;
|
||||
|
||||
for (i = 0; i < M_UNKNOWN; i++) {
|
||||
if (!strcmp(this_opt, efifb_dmi_list[i].optname) &&
|
||||
efifb_dmi_list[i].base != 0) {
|
||||
if (efifb_dmi_list[i].base != 0 &&
|
||||
!strcmp(this_opt, efifb_dmi_list[i].optname)) {
|
||||
screen_info.lfb_base = efifb_dmi_list[i].base;
|
||||
screen_info.lfb_linelength = efifb_dmi_list[i].stride;
|
||||
screen_info.lfb_width = efifb_dmi_list[i].width;
|
||||
|
|
Loading…
Reference in a new issue