apphandler: Fix for get system info command
Issue: Get system info parameters command giving improper results for
get revision byte
Fix: Provided fix to return proper completion code for invalid
get revision byte data
Tested:
Command: ipmitool raw 0x06 0x59 0xff 0x01 0x00 0x00 //get system info
Response: Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0
cmd=0x59 rsp=0xcc): Invalid data field in request
Command: ipmitool raw 0x06 0x59 0x00 0x01 0x00 0x00
Response: Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0
cmd=0x59 rsp=0x80): Unknown (0x80)
Command: ipmitool raw 0x06 0x59 0x81 0x01 0x00 0x00
Response: Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0
cmd=0x59 rsp=0xcc): Invalid data field in request
Command: ipmitool raw 0x06 0x59 0x80 0x01 0x00 0x00
Response: 11
Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com>
Change-Id: I2be9c9a65dfa5b5afbb9314230b0caede822eae9
diff --git a/apphandler.cpp b/apphandler.cpp
index fdc2d67..d567fe3 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
@@ -1241,7 +1241,6 @@
return hostname;
}
-static constexpr uint8_t revisionOnly = 0x80;
static constexpr uint8_t paramRevision = 0x11;
static constexpr size_t configParameterLength = 16;
@@ -1282,10 +1281,15 @@
ipmi::RspType<uint8_t, // Parameter revision
std::optional<uint8_t>, // data1 / setSelector / ProgressStatus
std::optional<std::vector<uint8_t>>> // data2-17
- ipmiAppGetSystemInfo(uint8_t getRevision, uint8_t paramSelector,
- uint8_t setSelector, uint8_t BlockSelector)
+ ipmiAppGetSystemInfo(uint7_t reserved, bool getRevision,
+ uint8_t paramSelector, uint8_t setSelector,
+ uint8_t BlockSelector)
{
- if (getRevision & revisionOnly)
+ if (reserved)
+ {
+ return ipmi::responseInvalidFieldRequest();
+ }
+ if (getRevision)
{
return ipmi::responseSuccess(paramRevision, std::nullopt, std::nullopt);
}