
On 7/3/22 14:22, Vyacheslav wrote:
25.04.2022 23:26, Heinrich Schuchardt wrote:
If argc is not < 3, it must be >= 3.
If argc >= 3, argv[2] cannot be NULL.
Fixes: 9de612ae4ded ("cmd: adc: Add support for storing ADC result in env variable") Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
cmd/adc.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/cmd/adc.c b/cmd/adc.c index 8de9121cad..195efa8661 100644 --- a/cmd/adc.c +++ b/cmd/adc.c @@ -71,7 +71,6 @@ static int do_adc_info(struct cmd_tbl *cmdtp, int flag, int argc, static int do_adc_single(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - char *varname = NULL; struct udevice *dev; unsigned int data; int ret, uV, val; @@ -79,9 +78,6 @@ static int do_adc_single(struct cmd_tbl *cmdtp, int flag, int argc, if (argc < 3) return CMD_RET_USAGE; - if (argc >= 3) - varname = argv[2];
ret = adc_channel_single_shot(argv[1], simple_strtol(argv[2], NULL, 0), &data); if (ret) { @@ -99,8 +95,7 @@ static int do_adc_single(struct cmd_tbl *cmdtp, int flag, int argc, printf("%u\n", data); } - if (varname) - env_set_ulong(varname, val); + env_set_ulong(argv[2], val);
The source code contains an error: argv[2] contains <channel> arg variable for env_set is in argv[3]
This patch is wrong. It must be reversed and these two lines must be corrected: if (argc >= 3) varname = argv[2];
to if (argc >= 4) varname = argv[3];
Could you, please, send a patch.
Best regards
Heinrich
return CMD_RET_SUCCESS; }