mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-11 11:07:23 +00:00
dynamically allocate fru_data array based on fru.size
This commit is contained in:
parent
1435321c86
commit
e0f8bb52bb
@ -74,7 +74,8 @@ static void ipmi_fru_print(struct ipmi_intf * intf, unsigned char id)
|
|||||||
{
|
{
|
||||||
struct ipmi_rs * rsp;
|
struct ipmi_rs * rsp;
|
||||||
struct ipmi_rq req;
|
struct ipmi_rq req;
|
||||||
unsigned char fru_data[256], msg_data[4];
|
unsigned char * fru_data;
|
||||||
|
unsigned char msg_data[4];
|
||||||
int i, len, offset;
|
int i, len, offset;
|
||||||
|
|
||||||
struct fru_area_chassis chassis;
|
struct fru_area_chassis chassis;
|
||||||
@ -101,6 +102,8 @@ static void ipmi_fru_print(struct ipmi_intf * intf, unsigned char id)
|
|||||||
if (verbose > 1)
|
if (verbose > 1)
|
||||||
printf("fru.size = %d bytes (accessed by %s)\n",
|
printf("fru.size = %d bytes (accessed by %s)\n",
|
||||||
fru.size, fru.access ? "words" : "bytes");
|
fru.size, fru.access ? "words" : "bytes");
|
||||||
|
if (!fru.size)
|
||||||
|
return;
|
||||||
|
|
||||||
msg_data[0] = id;
|
msg_data[0] = id;
|
||||||
msg_data[1] = 0;
|
msg_data[1] = 0;
|
||||||
@ -151,8 +154,11 @@ static void ipmi_fru_print(struct ipmi_intf * intf, unsigned char id)
|
|||||||
printf("fru.header.offset.multi: 0x%x\n", header.offset.multi);
|
printf("fru.header.offset.multi: 0x%x\n", header.offset.multi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fru_data = malloc(fru.size+1);
|
||||||
|
if (!fru_data)
|
||||||
|
return;
|
||||||
|
memset(fru_data, 0, fru.size+1);
|
||||||
offset = 0;
|
offset = 0;
|
||||||
memset(fru_data, 0, 256);
|
|
||||||
do {
|
do {
|
||||||
msg_data[0] = id;
|
msg_data[0] = id;
|
||||||
msg_data[1] = offset;
|
msg_data[1] = offset;
|
||||||
@ -391,6 +397,8 @@ static void ipmi_fru_print(struct ipmi_intf * intf, unsigned char id)
|
|||||||
i += h->len + sizeof (struct fru_multirec_header);
|
i += h->len + sizeof (struct fru_multirec_header);
|
||||||
} while (!(h->format & 0x80));
|
} while (!(h->format & 0x80));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(fru_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipmi_fru_print_all(struct ipmi_intf * intf)
|
static void ipmi_fru_print_all(struct ipmi_intf * intf)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user