[PATCH openpower-host-ipmi-oem v2] Fix endianness issue5
OpenBMC Patches
openbmc-patches at stwcx.xyz
Thu May 26 12:00:44 AEST 2016
From: Nan Li <bjlinan at cn.ibm.com>
Make it safe in both little-endian and big-endian bmc chip.
Signed-off-by: Nan Li <bjlinan at cn.ibm.com>
---
oemhandler.C | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/oemhandler.C b/oemhandler.C
index 026e0d1..2ec004d 100644
--- a/oemhandler.C
+++ b/oemhandler.C
@@ -29,9 +29,9 @@ ipmi_ret_t ipmi_ibm_oem_partial_esel(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
esel_request_t *reqptr = (esel_request_t*) request;
FILE *fp;
int r = 0;
- // TODO: Issue 5: This is not endian-safe.
- short *recid = (short*) &reqptr->selrecordls;
- short *offset = (short*) &reqptr->offsetls;
+
+ unsigned short recid = ((unsigned short) reqptr->selrecordms) << 8 + reqptr->selrecordls;
+ unsigned short offset = ((unsigned short) reqptr->offsetms) << 8 + reqptr->offsetls;
uint8_t rlen;
ipmi_ret_t rc = IPMI_CC_OK;
const char *pio;
@@ -59,7 +59,7 @@ ipmi_ret_t ipmi_ibm_oem_partial_esel(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// OpenPOWER Host Interface spec says if RecordID and Offset are
// 0 then then this is a new request
- if (!*recid && !*offset)
+ if (!recid && !offset)
pio = "wb";
else
pio = "rb+";
@@ -67,10 +67,10 @@ ipmi_ret_t ipmi_ibm_oem_partial_esel(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
rlen = (*data_len) - (uint8_t) (sizeof(esel_request_t));
printf("IPMI PARTIAL ESEL for %s Offset = %d Length = %d\n",
- g_esel_path, *offset, rlen);
+ g_esel_path, offset, rlen);
if ((fp = fopen(g_esel_path, pio)) != NULL) {
- fseek(fp, *offset, SEEK_SET);
+ fseek(fp, offset, SEEK_SET);
fwrite(reqptr+1,rlen,1,fp);
fclose(fp);
--
2.8.3
More information about the openbmc
mailing list