summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2016-09-09 08:37:22 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2016-09-12 08:15:47 +0200
commitbf6ddd6c4dccf01c4a27761c5f73918db578f8d6 (patch)
tree622aacc05de41920814985dbd34d5bfbd62daa4d
parentfd1ddfa89152c136aba091bff346716b6610779a (diff)
downloadbarebox-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.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/xfuncs.c b/lib/xfuncs.c
index aaf078854..1dc2ea92d 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);