Fix: Return error for invalid privileges
Return error code 0xCC for invalid privileges requested
in SetChannelAccess command.
Unit-Test:
1. Verified 0xCC is returned for command (reserved privilege)
ipmitool raw 0x6 0x40 0x1 0x82 0x80
Change-Id: I3ea1ee6e02019ef0ae5f812e7d5dd999d710e4e7
Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
diff --git a/user_channel/channel_mgmt.cpp b/user_channel/channel_mgmt.cpp
index 310ac2b..574b058 100644
--- a/user_channel/channel_mgmt.cpp
+++ b/user_channel/channel_mgmt.cpp
@@ -487,10 +487,12 @@
return IPMI_CC_ACTION_NOT_SUPPORTED_FOR_CHANNEL;
}
- if ((setFlag & setAccessMode) &&
- (!isValidAccessMode(chAccessData.accessMode)))
+ if (((setFlag & setAccessMode) &&
+ (!isValidAccessMode(chAccessData.accessMode))) ||
+ ((setFlag & setPrivLimit) &&
+ (!isValidPrivLimit(chAccessData.privLimit))))
{
- log<level::DEBUG>("Invalid access mode specified");
+ log<level::DEBUG>("Invalid access mode / privilege limit specified");
return IPMI_CC_INVALID_FIELD_REQUEST;
}
@@ -582,10 +584,12 @@
return IPMI_CC_ACTION_NOT_SUPPORTED_FOR_CHANNEL;
}
- if ((setFlag & setAccessMode) &&
- (!isValidAccessMode(chAccessData.accessMode)))
+ if (((setFlag & setAccessMode) &&
+ (!isValidAccessMode(chAccessData.accessMode))) ||
+ ((setFlag & setPrivLimit) &&
+ (!isValidPrivLimit(chAccessData.privLimit))))
{
- log<level::DEBUG>("Invalid access mode specified");
+ log<level::DEBUG>("Invalid access mode / privilege limit specified");
return IPMI_CC_INVALID_FIELD_REQUEST;
}