Re: [PATCH] dm: Add check for NULL dev_part_str
This should probably be "part: ..." On 5/15/21 12:36 PM, Sean Anderson wrote:
Some callers (e.g. cmd/fs.c) of fs_set_blk_dev may use a NULL dev_part_str. While blk_get_device_part_str handles this fine, part_get_info_by_dev_and_name does not. This fixes commands crashing when implicitly using bootdevice. Fixes: 7194527b6a ("cmd: fs: Use part_get_info_by_dev_and_name_or_num to parse partitions") Reported-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Sean Anderson <[email protected]> --- disk/part.c | 6 +++++- test/dm/part.c | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/disk/part.c b/disk/part.c index 5e7e59cf25..086da84b7f 100644 --- a/disk/part.c +++ b/disk/part.c @@ -714,7 +714,11 @@ static int part_get_info_by_dev_and_name(const char *dev_iface, int ret;/* Separate device and partition name specification */- part_str = strchr(dev_part_str, '#'); + if (dev_part_str) + part_str = strchr(dev_part_str, '#'); + else + part_str = NULL; + if (part_str) { dup_str = strdup(dev_part_str); dup_str[part_str - dev_part_str] = 0; diff --git a/test/dm/part.c b/test/dm/part.c index 051e9010b6..aff7cfe55f 100644 --- a/test/dm/part.c +++ b/test/dm/part.c @@ -46,8 +46,10 @@ static int dm_test_part(struct unit_test_state *uts)test(-ENODEV, "", true);env_set("bootdevice", "0"); + test(0, NULL, true); test(0, "", true); env_set("bootdevice", "1"); + test(1, NULL, false); test(1, "", false); test(1, "-", false); env_set("bootdevice", "");

