strcmp_l1 compares up to the length of the first arguments, i.e. it does a prefix check. For this, the prefix, which is usually a string literal, needs to be the first argument. The check for getvar:all doesn't follow this with the result that all of fastboot getvar 'all' fastboot getvar 'al' fastboot getvar 'a' fastboot getvar '' behave the same. This undocumented quirk is most likely unintended, so let's replace this with an actual equality check. Note that strcmp_l1 also does a NULL-ness check. This is safe to remove, as explained in the follow-up commit. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- v1 -> v2: - new patch --- common/fastboot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/fastboot.c b/common/fastboot.c index 532286703089..e85cc6d8aaf8 100644 --- a/common/fastboot.c +++ b/common/fastboot.c @@ -312,7 +312,7 @@ static void cb_getvar(struct fastboot *fb, const char *cmd) pr_debug("getvar: \"%s\"\n", cmd); - if (!strcmp_l1(cmd, "all")) { + if (!strcmp(cmd, "all")) { list_for_each_entry(var, &fb->variables, list) fastboot_tx_print(fb, FASTBOOT_MSG_INFO, "%s: %s", var->name, var->value); -- 2.39.2