[PATCH phosphor-host-ipmid v2] Handle errors finding openbmc_path #75

OpenBMC Patches openbmc-patches at stwcx.xyz
Fri May 13 22:00:45 AEST 2016


From: Nan Li <bjlinan at cn.ibm.com>

1.Check return value properly.

Signed-off-by: Nan Li <bjlinan at cn.ibm.com>
---
 ipmid.C         | 10 ++++++++++
 sensorhandler.C |  9 ++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/ipmid.C b/ipmid.C
index 728ba0b..413c2b7 100644
--- a/ipmid.C
+++ b/ipmid.C
@@ -565,6 +565,11 @@ int set_sensor_dbus_state_s(uint8_t number, const char *method, const char *valu
 
     r = find_openbmc_path("SENSOR", number, &a);
 
+    if (r < 0) {
+        fprintf(stderr, "Failed to find Sensor 0x%02x\n", number);
+        goto final;
+    }
+
     r = sd_bus_message_new_method_call(bus,&m,a.bus,a.path,a.interface,method);
     if (r < 0) {
         fprintf(stderr, "Failed to create a method call: %s", strerror(-r));
@@ -602,6 +607,11 @@ int set_sensor_dbus_state_y(uint8_t number, const char *method, const uint8_t va
 
     r = find_openbmc_path("SENSOR", number, &a);
 
+    if (r < 0) {
+        fprintf(stderr, "Failed to find Sensor 0x%02x\n", number);
+        goto final;
+    }
+
     r = sd_bus_message_new_method_call(bus,&m,a.bus,a.path,a.interface,method);
     if (r < 0) {
         fprintf(stderr, "Failed to create a method call: %s", strerror(-r));
diff --git a/sensorhandler.C b/sensorhandler.C
index bb14e7a..9c7c2cd 100644
--- a/sensorhandler.C
+++ b/sensorhandler.C
@@ -180,6 +180,13 @@ ipmi_ret_t ipmi_sen_get_sensor_reading(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
 
     r = find_openbmc_path("SENSOR", reqptr->sennum, &a);
 
+    if (r < 0) {
+        fprintf(stderr, "Failed to find Sensor 0x%02x\n", reqptr->sennum);
+        *data_len=0;
+        rc = IPMI_CC_SENSOR_INVALID;
+        goto final;
+    }
+
     type = find_sensor(reqptr->sennum);
 
     fprintf(stderr, "Bus: %s, Path: %s, Interface: %s\n", a.bus, a.path, a.interface);
@@ -220,7 +227,7 @@ ipmi_ret_t ipmi_sen_get_sensor_reading(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
             break;
     }
 
-
+final:
     reply = sd_bus_message_unref(reply);
 
     return rc;
-- 
2.8.1




More information about the openbmc mailing list