summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAppaRao Puli <apparao.puli@linux.intel.com>2019-12-16 19:35:39 +0530
committerAppaRao Puli <apparao.puli@linux.intel.com>2019-12-17 18:57:38 +0000
commit5eb2bef287eff01515671f07148393ceb9c5cad6 (patch)
tree6df333372cc3766f602f62e42f90b9e9aad9ad1d
parent61dbeef97168db1a1f7a351c5f95e09afd361e48 (diff)
downloadbmcweb-5eb2bef287eff01515671f07148393ceb9c5cad6.tar.gz
bmcweb-5eb2bef287eff01515671f07148393ceb9c5cad6.zip
Fix: bug fixes in readJson
This commit contains bug fixes in readJson function call 1) Handled invalid double value which is leading to crash bmcweb. If user give string for double value key, its not handled in readJson which intern causes exception and crash. 2) If any of input types of floating_point, signed or unsigned int type values are provided with wrong type, it should return error, instead its returning 200 success response. Added code to return proper error response. Tested: - Tested invalid case by giving wrong type values in PATCH. URI: /redfish/v1/Chassis/WC_Baseboard/Thermal METHOD: Patch REQUEST: { "Fans": [ { "MemberId": "Fan_1a", "Reading": "200" } ] } RESPONSE: { "Reading@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The value \"200\" for the property Reading is of a different type than the property can accept.", "MessageArgs": [ "\"200\"", "Reading" ], "MessageId": "Base.1.4.0.PropertyValueTypeError", "Resolution": "Correct the value for the property in the request body and resubmit the request if the operation failed.", "Severity": "Warning" } ] } - Also performed some positive and negative tests with other URI's. - Redfish validator ran successfully without any issue(No impact though) Change-Id: Ie98384e67a863ab96aa537f492a686b2c7ebb3a2 Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com>
-rw-r--r--redfish-core/include/utils/json_utils.hpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/redfish-core/include/utils/json_utils.hpp b/redfish-core/include/utils/json_utils.hpp
index 5f3f098..86bd97c 100644
--- a/redfish-core/include/utils/json_utils.hpp
+++ b/redfish-core/include/utils/json_utils.hpp
@@ -129,6 +129,11 @@ bool unpackValue(nlohmann::json& jsonValue, const std::string& key,
jsonPtr = &helper;
}
}
+ if (jsonPtr == nullptr)
+ {
+ messages::propertyValueTypeError(res, jsonValue.dump(), key);
+ return false;
+ }
if (!checkRange<Type>(*jsonPtr, key, jsonValue, res))
{
return false;
@@ -141,6 +146,7 @@ bool unpackValue(nlohmann::json& jsonValue, const std::string& key,
int64_t* jsonPtr = jsonValue.get_ptr<int64_t*>();
if (jsonPtr == nullptr)
{
+ messages::propertyValueTypeError(res, jsonValue.dump(), key);
return false;
}
if (!checkRange<Type>(*jsonPtr, key, jsonValue, res))
@@ -156,6 +162,7 @@ bool unpackValue(nlohmann::json& jsonValue, const std::string& key,
uint64_t* jsonPtr = jsonValue.get_ptr<uint64_t*>();
if (jsonPtr == nullptr)
{
+ messages::propertyValueTypeError(res, jsonValue.dump(), key);
return false;
}
if (!checkRange<Type>(*jsonPtr, key, jsonValue, res))
OpenPOWER on IntegriCloud