mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-11 19:17:22 +00:00
fix handling of bad SEL entries
This commit is contained in:
parent
62f52f0598
commit
4e025b3e0e
@ -241,8 +241,9 @@ ipmi_sel_get_std_entry(struct ipmi_intf * intf, unsigned short id, struct sel_ev
|
|||||||
|
|
||||||
|
|
||||||
if (rsp->data[4] >= 0xc0) {
|
if (rsp->data[4] >= 0xc0) {
|
||||||
printf("Not a standard SEL Entry!\n");
|
if (verbose)
|
||||||
return 0;
|
printf("Entry %04xh not a standard SEL entry!\n", id);
|
||||||
|
return (rsp->data[1] << 8) | rsp->data[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(evt, 0, sizeof(*evt));
|
memset(evt, 0, sizeof(*evt));
|
||||||
@ -394,7 +395,7 @@ ipmi_sel_list_entries(struct ipmi_intf * intf)
|
|||||||
{
|
{
|
||||||
struct ipmi_rs * rsp;
|
struct ipmi_rs * rsp;
|
||||||
struct ipmi_rq req;
|
struct ipmi_rq req;
|
||||||
unsigned short next_id = 0;
|
unsigned short next_id = 0, curr_id = 0;
|
||||||
struct sel_event_record evt;
|
struct sel_event_record evt;
|
||||||
|
|
||||||
memset(&req, 0, sizeof(req));
|
memset(&req, 0, sizeof(req));
|
||||||
@ -431,13 +432,14 @@ ipmi_sel_list_entries(struct ipmi_intf * intf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (next_id != 0xffff) {
|
while (next_id != 0xffff) {
|
||||||
|
curr_id = next_id;
|
||||||
if (verbose > 1)
|
if (verbose > 1)
|
||||||
printf("SEL Next ID: %04x\n", next_id);
|
printf("SEL Next ID: %04x\n", curr_id);
|
||||||
|
|
||||||
next_id = ipmi_sel_get_std_entry(intf, next_id, &evt);
|
next_id = ipmi_sel_get_std_entry(intf, curr_id, &evt);
|
||||||
if (!next_id) {
|
if (!next_id) {
|
||||||
/* retry */
|
/* retry */
|
||||||
next_id = ipmi_sel_get_std_entry(intf, next_id, &evt);
|
next_id = ipmi_sel_get_std_entry(intf, curr_id, &evt);
|
||||||
if (!next_id)
|
if (!next_id)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user