fix potential nullpointer exceptions in errorhandling

remove unnecessary strdups
This commit is contained in:
Fredrik Öhrn 2004-01-08 22:53:57 +00:00
parent 1c9f5127e6
commit 8c1dbf31c4

View File

@ -230,13 +230,20 @@ ipmi_sdr_print_sensor_full(struct ipmi_intf * intf,
memcpy(desc, sensor->id_string, 16); memcpy(desc, sensor->id_string, 16);
rsp = ipmi_sdr_get_sensor_reading(intf, sensor->keys.sensor_num); rsp = ipmi_sdr_get_sensor_reading(intf, sensor->keys.sensor_num);
if (!rsp || rsp->ccode) {
if (!rsp) {
printf("Error reading sensor %d\n", sensor->keys.sensor_num);
return;
}
if (rsp->ccode) {
if (rsp && rsp->ccode == 0xcb) { if (rsp && rsp->ccode == 0xcb) {
/* sensor not found */ /* sensor not found */
val = 0.0; val = 0.0;
validread = 0; validread = 0;
} else { } else {
printf("Error reading sensor: %s\n", printf("Error reading sensor %d, %s\n",
sensor->keys.sensor_num,
val2str(rsp->ccode, completion_code_vals)); val2str(rsp->ccode, completion_code_vals));
return; return;
} }
@ -483,8 +490,15 @@ ipmi_sdr_print_sensor_compact(struct ipmi_intf * intf,
memcpy(desc, sensor->id_string, 16); memcpy(desc, sensor->id_string, 16);
rsp = ipmi_sdr_get_sensor_reading(intf, sensor->keys.sensor_num); rsp = ipmi_sdr_get_sensor_reading(intf, sensor->keys.sensor_num);
if ((!rsp) || (rsp && (rsp->ccode !=0 && rsp->ccode != 0xcd))) { if (!rsp) {
printf("Unable to get sensor %x reading: cc=%x\n", rsp->ccode); printf("Error reading sensor %d\n", sensor->keys.sensor_num);
return;
}
if (rsp->ccode !=0 && rsp->ccode != 0xcd) {
printf("Error reading sensor %d, %s\n",
sensor->keys.sensor_num,
val2str(rsp->ccode, completion_code_vals));
return; return;
} }
@ -523,28 +537,28 @@ ipmi_sdr_print_sensor_compact(struct ipmi_intf * intf,
} }
else { else {
char * state; char * state;
char temp[18];
if (rsp->ccode == 0xcd) { if (rsp->ccode == 0xcd) {
state = strdup("Not Readable "); state = "Not Readable ";
} else { } else {
switch (sensor->sensor.type) { switch (sensor->sensor.type) {
case 0x07: /* processor */ case 0x07: /* processor */
if (rsp->data[2] & 0x80) if (rsp->data[2] & 0x80)
state = csv_output ? strdup("Present") : strdup("Present "); state = csv_output ? "Present" : "Present ";
else else
state = csv_output ? strdup("Not Present") : strdup("Not Present "); state = csv_output ? "Not Present" : "Not Present ";
break; break;
case 0x21: /* slot/connector */ case 0x21: /* slot/connector */
if (rsp->data[2] & 0x04) if (rsp->data[2] & 0x04)
state = csv_output ? strdup("Installed") : strdup("Installed "); state = csv_output ? "Installed" : "Installed ";
else else
state = csv_output ? strdup("Not Installed") : strdup("Not Installed "); state = csv_output ? "Not Installed" : "Not Installed ";
break; break;
default: default:
{ {
char temp[18];
sprintf(temp, "0x%02x", rsp->data[2]); sprintf(temp, "0x%02x", rsp->data[2]);
state = strdup(temp); state = temp;
} }
break; break;
} }
@ -562,8 +576,6 @@ ipmi_sdr_print_sensor_compact(struct ipmi_intf * intf,
printf("%-17s | ok\n", state); printf("%-17s | ok\n", state);
} else } else
printf("%s\n", state); printf("%s\n", state);
free(state);
} }
} }