diff options
author | Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> | 2019-01-29 10:56:57 +0530 |
---|---|---|
committer | Tom Joseph <tomjoseph@in.ibm.com> | 2019-02-02 04:26:22 +0000 |
commit | 93411602ec4fd2a369d127f1d44c149c2c9c7e04 (patch) | |
tree | 3056d5c07a3eeaccafd31e97e5c288a53e295587 /user_channel/channel_mgmt.cpp | |
parent | b6771e0f58cf4272055f0dc6c4aa2cfdd096c8ce (diff) | |
download | phosphor-host-ipmid-93411602ec4fd2a369d127f1d44c149c2c9c7e04.tar.gz phosphor-host-ipmid-93411602ec4fd2a369d127f1d44c149c2c9c7e04.zip |
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>
Diffstat (limited to 'user_channel/channel_mgmt.cpp')
-rw-r--r-- | user_channel/channel_mgmt.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
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 @@ ipmi_ret_t 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 @@ ipmi_ret_t ChannelConfig::setChannelAccessPersistData( 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; } |