This is an automated email from the ASF dual-hosted git repository.

agross pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 3c2cfdb  hw: battery: Check return code from adc_chan_config
     new 6215ec7  Merge pull request #2589 from agross-korg/fws-1033
3c2cfdb is described below

commit 3c2cfdb45cfbfcda7b1facce5cb8543a4909a7fc
Author: Andy Gross <andy.gr...@juul.com>
AuthorDate: Mon May 10 14:27:50 2021 -0500

    hw: battery: Check return code from adc_chan_config
    
    This patch fixes an unchecked return value when invoking the adc_chan_config
    call.  This issue was found as part of a static analysis tool.  Fixed all
    instances using this API that were not checking return value.
    
    Signed-off-by: Andy Gross <andy.gr...@juul.com>
---
 hw/battery/src/battery_adc.c                     | 7 +++++--
 hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c | 5 ++++-
 hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c | 5 ++++-
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/hw/battery/src/battery_adc.c b/hw/battery/src/battery_adc.c
index 733ad45..d26a35e 100644
--- a/hw/battery/src/battery_adc.c
+++ b/hw/battery/src/battery_adc.c
@@ -118,8 +118,11 @@ battery_adc_open(struct os_dev *dev, uint32_t timeout, 
void *arg)
         (char *)bat_adc->cfg.adc_dev_name, timeout, bat_adc->cfg.adc_open_arg);
     if (bat_adc->adc_dev) {
         /* Setup channel configuration to use for battery voltage */
-        adc_chan_config(bat_adc->adc_dev, bat_adc->cfg.channel,
-                bat_adc->cfg.adc_channel_cfg);
+        rc = adc_chan_config(bat_adc->adc_dev, bat_adc->cfg.channel,
+                             bat_adc->cfg.adc_channel_cfg);
+        if (rc) {
+            return rc;
+        }
 
         /* Additional GPIO needed before measurement ? */
         if (bat_adc->cfg.activation_pin_needed &&
diff --git a/hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c 
b/hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c
index bffaa61..b404fe2 100644
--- a/hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c
+++ b/hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c
@@ -682,7 +682,10 @@ da1469x_open_battery_adc(const char *dev_name, uint32_t 
wait)
     if (adc) {
         /* call adc_chan_config to setup correct multiplier so read returns
          * value in mV */
-        adc_chan_config((struct adc_dev *)adc, 0, NULL);
+        if (adc_chan_config((struct adc_dev *)adc, 0, NULL)) {
+            os_dev_close(adc);
+            adc = NULL;
+        }
     }
     return adc;
 }
diff --git a/hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c 
b/hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c
index a2b3c33..6d890e7 100644
--- a/hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c
+++ b/hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c
@@ -471,7 +471,10 @@ da1469x_open_battery_adc(const char *dev_name, uint32_t 
wait)
     if (adc) {
         /* call adc_chan_config to setup correct multiplier so read returns
          * value in mV */
-        adc_chan_config((struct adc_dev *)adc, 0, NULL);
+        if (adc_chan_config((struct adc_dev *)adc, 0, NULL)) {
+            os_dev_close(adc);
+            adc = NULL;
+        }
     }
     return adc;
 }

Reply via email to