提交 2697eff1 编写于 作者: W Wolfgang Denk

mtdparts: fix write through NULL pointer

The "mtdparts add" command wrote through a NULL pointer - on many
systems this went unnoticed (PowerPC has writable RAM there, some ARM
systems have ROM where a write has no effect), but on arm1136
(i.MX31) it crashed the system.

Add appropriate checks.
Signed-off-by: NWolfgang Denk <wd@denx.de>
上级 3699c28e
......@@ -837,14 +837,16 @@ static int device_parse(const char *const mtd_dev, const char **ret, struct mtd_
u32 offset;
int err = 1;
p = mtd_dev;
DEBUGF("===device_parse===\n");
assert(retdev);
*retdev = NULL;
*ret = NULL;
DEBUGF("===device_parse===\n");
if (ret)
*ret = NULL;
/* fetch <mtd-id> */
mtd_id = p;
mtd_id = p = mtd_dev;
if (!(p = strchr(mtd_id, ':'))) {
printf("no <mtd-id> identifier\n");
return 1;
......@@ -913,11 +915,14 @@ static int device_parse(const char *const mtd_dev, const char **ret, struct mtd_
/* check for next device presence */
if (p) {
if (*p == ';') {
if (ret)
*ret = ++p;
} else if (*p == '\0') {
if (ret)
*ret = p;
} else {
printf("unexpected character '%c' at the end of device\n", *p);
if (ret)
*ret = NULL;
return 1;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册