Skip to content
Snippets Groups Projects
Commit 792afddb authored by Cédric Le Goater's avatar Cédric Le Goater Committed by Michael S. Tsirkin
Browse files

ipmi: fix SDR length value


The IPMI BMC simulator populates the SDR table with a set of initial
SDRs. The length of each SDR is taken from the record itself (byte 4)
which does not include the size of the header. But, the full length
(header + data) is required by the sdr_add_entry() routine.

Signed-off-by: default avatarCédric Le Goater <clg@fr.ibm.com>
Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 7cfa06a2
No related branches found
No related tags found
No related merge requests found
......@@ -356,7 +356,7 @@ static int sdr_find_entry(IPMISdr *sdr, uint16_t recid,
while (pos < sdr->next_free) {
uint16_t trec = sdr->sdr[pos] | (sdr->sdr[pos + 1] << 8);
unsigned int nextpos = pos + sdr->sdr[pos + 4];
unsigned int nextpos = pos + sdr->sdr[pos + 4] + 5;
if (trec == recid) {
if (nextrec) {
......@@ -1164,7 +1164,7 @@ static void get_sdr(IPMIBmcSim *ibs,
rsp[2] = IPMI_CC_REQ_ENTRY_NOT_PRESENT;
return;
}
if (cmd[6] > (ibs->sdr.sdr[pos + 4])) {
if (cmd[6] > (ibs->sdr.sdr[pos + 4] + 5)) {
rsp[2] = IPMI_CC_PARM_OUT_OF_RANGE;
return;
}
......@@ -1173,7 +1173,7 @@ static void get_sdr(IPMIBmcSim *ibs,
IPMI_ADD_RSP_DATA((nextrec >> 8) & 0xff);
if (cmd[7] == 0xff) {
cmd[7] = ibs->sdr.sdr[pos + 4] - cmd[6];
cmd[7] = ibs->sdr.sdr[pos + 4] + 5 - cmd[6];
}
if ((cmd[7] + *rsp_len) > max_rsp_len) {
......@@ -1647,17 +1647,17 @@ static void ipmi_sim_init(Object *obj)
error_report("Problem with recid 0x%4.4x", i);
return;
}
len = init_sdrs[i + 4];
len = init_sdrs[i + 4] + 5;
recid = init_sdrs[i] | (init_sdrs[i + 1] << 8);
if (recid == 0xffff) {
break;
}
if ((i + len + 5) > sizeof(init_sdrs)) {
if ((i + len) > sizeof(init_sdrs)) {
error_report("Problem with recid 0x%4.4x", i);
return;
}
sdr_add_entry(ibs, init_sdrs + i, len, NULL);
i += len + 5;
i += len;
}
ipmi_init_sensors_from_sdrs(ibs);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment