[Ipmitool-devel] [PATCH] Fix crash in 'sdr elist' From: Jan Safranek Date: 2010-04-19 13:17 When 'ipmitool sdr elist' receives unexpected message (e.g. error code instead of SDR record), ipmitool crashes. I was able to reproduce it sometimes on Dell PowerEdge 1950, but it depends on HW and its current 'mood' - sometimes BMC times out when reading SDR from slaves and ipmitool crashes. Following patch adds necessary checks if received packet has some data to process. Signed-off-by: Jan Safranek --- lib/ipmi_sdr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- ipmitool-1.8.11.orig/lib/ipmi_sdr.c +++ ipmitool-1.8.11/lib/ipmi_sdr.c @@ -1746,7 +1746,9 @@ ipmi_sdr_print_sensor_compact(struct ipm validread = 0; } } else { - if (IS_READING_UNAVAILABLE(rsp->data[1])) { + if (rsp->data_len <= 1) { + validread = 0; + } else if (IS_READING_UNAVAILABLE(rsp->data[1])) { /* sensor reading unavailable */ validread = 0; } else if (IS_SCANNING_DISABLED(rsp->data[1])) { @@ -1828,7 +1830,8 @@ ipmi_sdr_print_sensor_compact(struct ipm printf("ns | %2d.%1d | ", sensor->entity.id, sensor->entity.instance); - if (IS_SCANNING_DISABLED(rsp->data[1])) + if (rsp && rsp->data_len > 1 && + IS_SCANNING_DISABLED(rsp->data[1])) printf("Disabled"); else printf("No Reading");