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.schucha...@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;
  }


Reply via email to