]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
fastboot: only look up real partition names when no alias exists
authorMatthias Schiffer <matthias.schiffer@ew.tq-group.com>
Thu, 16 Dec 2021 10:26:38 +0000 (11:26 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 28 Jan 2022 16:30:39 +0000 (11:30 -0500)
Having U-Boot look up the passed partition name even though an alias
exists is unexpected, leading to warning messages (when the alias name
doesn't exist as a real partition name) or the use of the wrong
partition.

Change part_get_info_by_name_or_alias() to consider real partitions
names only if no alias of the same name exists, allowing to use aliases
to override the configuration for existing partition names.

Also change one use of strcpy() to strlcpy().

Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Reviewed-by: Sean Anderson <sean.anderson@seco.com>
drivers/fastboot/fb_mmc.c

index 2710879812fe37d22568b6b4a6da87d5990f17ef..c62e414306c3cd981f03e94b6380b63fe0d41fdb 100644 (file)
@@ -104,23 +104,18 @@ static int part_get_info_by_name_or_alias(struct blk_desc **dev_desc,
                                          const char *name,
                                          struct disk_partition *info)
 {
-       int ret;
-
-       ret = do_get_part_info(dev_desc, name, info);
-       if (ret < 0) {
-               /* strlen("fastboot_partition_alias_") + PART_NAME_LEN + 1 */
-               char env_alias_name[25 + PART_NAME_LEN + 1];
-               char *aliased_part_name;
-
-               /* check for alias */
-               strcpy(env_alias_name, "fastboot_partition_alias_");
-               strlcat(env_alias_name, name, sizeof(env_alias_name));
-               aliased_part_name = env_get(env_alias_name);
-               if (aliased_part_name != NULL)
-                       ret = do_get_part_info(dev_desc, aliased_part_name,
-                                              info);
-       }
-       return ret;
+       /* strlen("fastboot_partition_alias_") + PART_NAME_LEN + 1 */
+       char env_alias_name[25 + PART_NAME_LEN + 1];
+       char *aliased_part_name;
+
+       /* check for alias */
+       strlcpy(env_alias_name, "fastboot_partition_alias_", sizeof(env_alias_name));
+       strlcat(env_alias_name, name, sizeof(env_alias_name));
+       aliased_part_name = env_get(env_alias_name);
+       if (aliased_part_name)
+               name = aliased_part_name;
+
+       return do_get_part_info(dev_desc, name, info);
 }
 
 /**