From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Grinberg Date: Sun, 28 Sep 2014 21:49:00 +0300 Subject: [U-Boot] [PATCH 4/4] dm: simplify the loop in lists_driver_lookup_name() In-Reply-To: References: <1411912347-13642-1-git-send-email-yamada.m@jp.panasonic.com> <1411912347-13642-5-git-send-email-yamada.m@jp.panasonic.com> Message-ID: <5428581C.6070903@compulab.co.il> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Masahiro, Simon, On 09/28/14 18:22, Simon Glass wrote: > Hi Masahiro, > > On 28 September 2014 07:52, Masahiro Yamada wrote: >> if (strncmp(name, entry->name, len)) >> continue; >> >> /* Full match */ >> if (len == strlen(entry->name)) >> return entry; >> >> is equivalent to: >> >> if (!strcmp(name, entry->name)) >> return entry; >> >> The latter is simpler. >> >> Signed-off-by: Masahiro Yamada >> --- >> >> drivers/core/lists.c | 9 +-------- >> 1 file changed, 1 insertion(+), 8 deletions(-) >> >> diff --git a/drivers/core/lists.c b/drivers/core/lists.c >> index 699f94b..3a1ea85 100644 >> --- a/drivers/core/lists.c >> +++ b/drivers/core/lists.c >> @@ -24,19 +24,12 @@ struct driver *lists_driver_lookup_name(const char *name) >> ll_entry_start(struct driver, driver); >> const int n_ents = ll_entry_count(struct driver, driver); >> struct driver *entry; >> - int len; >> >> if (!drv || !n_ents) >> return NULL; >> >> - len = strlen(name); >> - >> for (entry = drv; entry != drv + n_ents; entry++) { >> - if (strncmp(name, entry->name, len)) >> - continue; >> - >> - /* Full match */ >> - if (len == strlen(entry->name)) >> + if (!strcmp(name, entry->name)) >> return entry; >> } > > The discussion on this was here: > > http://lists.denx.de/pipermail/u-boot/2014-September/189336.html > > I don't see a lot of value in the extra code, so I think we should > take this patch. If it is found to be a problem, we can go back to the > defensive code and add a test case so it is clear what exactly we are > defending against. > > Acked-by: Simon Glass > Following the discussion referenced above, we have here a classic case of C language strings problem. One can dig about it all over the Internet (for example here [1]). I don't think we will invent a solution for that problem here. Also we are not about to abandon the C language... So, unless someone comes out with a real case to solve, I think we should merge this. Acked-by: Igor Grinberg [1] http://www.sei.cmu.edu/library/abstracts/news-at-sei/feature120061.cfm -- Regards, Igor.