diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2016-09-09 08:37:22 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-09-12 08:15:47 +0200 |
commit | bf6ddd6c4dccf01c4a27761c5f73918db578f8d6 (patch) | |
tree | 622aacc05de41920814985dbd34d5bfbd62daa4d | |
parent | fd1ddfa89152c136aba091bff346716b6610779a (diff) | |
download | barebox-bf6ddd6c4dccf01c4a27761c5f73918db578f8d6.tar.gz barebox-bf6ddd6c4dccf01c4a27761c5f73918db578f8d6.tar.xz |
xstrdup: don't panic on xstrdup(NULL)
Instead return just NULL. This matches the behaviour of kstrdup in the
kernel and xstrdup in busybox.
This fixes a panic with CONFIG_CMD_MAGICVAR=y and
CONFIG_CMD_MAGICVAR_HELP unset in magicvar_add() where description is
always NULL.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | lib/xfuncs.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/xfuncs.c b/lib/xfuncs.c index aaf0788544..1dc2ea92d8 100644 --- a/lib/xfuncs.c +++ b/lib/xfuncs.c @@ -56,10 +56,15 @@ EXPORT_SYMBOL(xzalloc); char *xstrdup(const char *s) { - char *p = strdup(s); + char *p; + + if (!s) + return NULL; + p = strdup(s); if (!p) panic("ERROR: out of memory\n"); + return p; } EXPORT_SYMBOL(xstrdup); |