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; }