From: David Herrmann <dh.herrmann@gmail.com> To: linux-fbdev@vger.kernel.org Cc: James Bates <james.h.bates@gmail.com>, linux-kernel@vger.kernel.org, Tomi Valkeinen <tomi.valkeinen@ti.com>, Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>, David Herrmann <dh.herrmann@gmail.com> Subject: [PATCH v3] efifb: prevent null-deref when iterating dmi_list Date: Wed, 2 Oct 2013 18:43:39 +0200 [thread overview] Message-ID: <1380732219-5458-1-git-send-email-dh.herrmann@gmail.com> (raw) In-Reply-To: <1380732056-5387-1-git-send-email-dh.herrmann@gmail.com> From: James Bates <james.h.bates@gmail.com> 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> --- v3: fixes the "Author" field and James' email address drivers/video/efifb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c index 7f9ff75..fcb9500 100644 --- a/drivers/video/efifb.c +++ b/drivers/video/efifb.c @@ -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; -- 1.8.4
WARNING: multiple messages have this Message-ID (diff)
From: David Herrmann <dh.herrmann@gmail.com> To: linux-fbdev@vger.kernel.org Cc: James Bates <james.h.bates@gmail.com>, linux-kernel@vger.kernel.org, Tomi Valkeinen <tomi.valkeinen@ti.com>, Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>, David Herrmann <dh.herrmann@gmail.com> Subject: [PATCH v3] efifb: prevent null-deref when iterating dmi_list Date: Wed, 02 Oct 2013 16:43:39 +0000 [thread overview] Message-ID: <1380732219-5458-1-git-send-email-dh.herrmann@gmail.com> (raw) In-Reply-To: <1380732056-5387-1-git-send-email-dh.herrmann@gmail.com> From: James Bates <james.h.bates@gmail.com> 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> --- v3: fixes the "Author" field and James' email address drivers/video/efifb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c index 7f9ff75..fcb9500 100644 --- a/drivers/video/efifb.c +++ b/drivers/video/efifb.c @@ -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; -- 1.8.4
next prev parent reply other threads:[~2013-10-02 16:43 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-10-02 16:40 [PATCH v2] efifb: prevent null-deref when iterating dmi_list David Herrmann 2013-10-02 16:40 ` David Herrmann 2013-10-02 16:43 ` David Herrmann [this message] 2013-10-02 16:43 ` [PATCH v3] " David Herrmann 2013-10-19 10:40 ` David Herrmann 2013-10-19 10:40 ` David Herrmann 2013-10-29 10:42 ` Tomi Valkeinen 2013-10-29 10:42 ` Tomi Valkeinen 2013-10-31 10:45 ` [PATCH v2] " Jean-Christophe PLAGNIOL-VILLARD 2013-10-31 10:45 ` Jean-Christophe PLAGNIOL-VILLARD 2013-10-31 16:17 ` David Herrmann 2013-10-31 16:17 ` David Herrmann 2013-11-01 11:10 ` Jean-Christophe PLAGNIOL-VILLARD 2013-11-01 11:10 ` Jean-Christophe PLAGNIOL-VILLARD 2013-11-01 12:09 ` David Herrmann 2013-11-01 12:09 ` David Herrmann
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1380732219-5458-1-git-send-email-dh.herrmann@gmail.com \ --to=dh.herrmann@gmail.com \ --cc=james.h.bates@gmail.com \ --cc=linux-fbdev@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=plagnioj@jcrosoft.com \ --cc=tomi.valkeinen@ti.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.