All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [RFC/PATCH] common/command.c: Guard strchr/strlen from NULL pointer
@ 2010-11-24 10:15 Thomas Weber
  2010-11-24 11:07 ` Wolfgang Denk
  2010-11-24 12:44 ` [U-Boot] [RFC/PATCH] common/command.c: Guard strchr/strlen from NULL pointer Sergei Shtylyov
  0 siblings, 2 replies; 7+ messages in thread
From: Thomas Weber @ 2010-11-24 10:15 UTC (permalink / raw)
  To: u-boot

Guard strchr/strlen from being called with NULL pointer. 
This line is crashing on OMAP3/Devkit8000 when command "env" is called without subcommand.

Toolchain is Codesourcery 2010q1.

The cmd is NULL in this case because the calling function "do_env" decremented the argc 
without checking if there are still arguments available.

caller:
static int do_env (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
...
        /* drop initial "env" arg */
        argc--;
        argv++;

        cp = find_cmd_tbl(argv[0], cmd_env_sub, ARRAY_SIZE(cmd_env_sub));


Signed-off-by: Thomas Weber <weber@corscience.de>
---
 common/command.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/common/command.c b/common/command.c
index 0020eac..03a713a 100644
--- a/common/command.c
+++ b/common/command.c
@@ -105,14 +105,15 @@ cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len)
 	cmd_tbl_t *cmdtp;
 	cmd_tbl_t *cmdtp_temp = table;	/*Init value */
 	const char *p;
-	int len;
+	int len = 0;
 	int n_found = 0;
 
 	/*
 	 * Some commands allow length modifiers (like "cp.b");
 	 * compare command name only until first dot.
 	 */
-	len = ((p = strchr(cmd, '.')) == NULL) ? strlen (cmd) : (p - cmd);
+	if (cmd != NULL)
+		len = ((p = strchr(cmd, '.')) == NULL) ? strlen (cmd) : (p - cmd);
 
 	for (cmdtp = table;
 	     cmdtp != table + table_len;
-- 
1.7.3.2

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-11-27 22:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-24 10:15 [U-Boot] [RFC/PATCH] common/command.c: Guard strchr/strlen from NULL pointer Thomas Weber
2010-11-24 11:07 ` Wolfgang Denk
2010-11-24 12:07   ` [U-Boot] [RFC/PATCHv2 1/2] Common/command: " Thomas Weber
2010-11-27 22:19     ` Wolfgang Denk
2010-11-24 12:07   ` [U-Boot] [RFC/PATCHv2 2/2] Common/cmd_nvedit: Check for env subcommand Thomas Weber
2010-11-27 22:19     ` Wolfgang Denk
2010-11-24 12:44 ` [U-Boot] [RFC/PATCH] common/command.c: Guard strchr/strlen from NULL pointer Sergei Shtylyov

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.