[AMD Official Use Only - General] Reviewed-by: Abner Chang <abner.ch...@amd.com>
> -----Original Message----- > From: Nickle Wang <nick...@nvidia.com> > Sent: Thursday, November 23, 2023 10:34 PM > To: devel@edk2.groups.io > Cc: Chang, Abner <abner.ch...@amd.com>; Igor Kulchytskyy > <ig...@ami.com>; Nick Ramirez <nrami...@nvidia.com> > Subject: [edk2-redfish-client][PATCH 6/6] > RedfishClientPkg/RedfishFeatureUtilityLib: add string NULL check > > Caution: This message originated from an External Source. Use proper caution > when opening attachments, clicking links, or responding. > > > Add string NULL check in attribute comparison function and prevent > NULL string assertion. This is not supposed to happen in normal > condition so add error output for debugging purpose. > > Signed-off-by: Nickle Wang <nick...@nvidia.com> > Cc: Abner Chang <abner.ch...@amd.com> > Cc: Igor Kulchytskyy <ig...@ami.com> > Cc: Nick Ramirez <nrami...@nvidia.com> > --- > .../RedfishFeatureUtilityLib.c | 31 ++++++++++++++----- > 1 file changed, 24 insertions(+), 7 deletions(-) > > diff --git > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib. > c > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib. > c > index 753cd7b2..6652539c 100644 > --- > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib. > c > +++ > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib. > c > @@ -3743,6 +3743,15 @@ CompareRedfishPropertyVagueValues ( > // Loop through all key/value on Redfish service.. > // > while (ThisRedfishVagueKeyValuePtr != NULL) { > + // > + // Empty attribute string check. > + // > + if (IS_EMPTY_STRING (ThisConfigVagueKeyValuePtr->KeyNamePtr) || > IS_EMPTY_STRING (ThisRedfishVagueKeyValuePtr->KeyNamePtr)) { > + DEBUG ((DEBUG_ERROR, "%a: empty attribute name detected!!\n", > __func__)); > + ThisRedfishVagueKeyValuePtr = ThisRedfishVagueKeyValuePtr- > >NextKeyValuePtr; > + continue; > + } > + > if (AsciiStrCmp (ThisConfigVagueKeyValuePtr->KeyNamePtr, > ThisRedfishVagueKeyValuePtr->KeyNamePtr) == 0) { > // > // Check the type of value. > @@ -3758,28 +3767,36 @@ CompareRedfishPropertyVagueValues ( > // > // Is the string identical? > // > - if (AsciiStrCmp ( > - ThisConfigVagueKeyValuePtr->Value->DataValue.CharPtr, > - ThisRedfishVagueKeyValuePtr->Value->DataValue.CharPtr > - ) == 0) > - { > - break; > + if ((ThisConfigVagueKeyValuePtr->Value->DataValue.CharPtr != NULL) > && (ThisRedfishVagueKeyValuePtr->Value->DataValue.CharPtr != NULL)) { > + if (AsciiStrCmp ( > + ThisConfigVagueKeyValuePtr->Value->DataValue.CharPtr, > + ThisRedfishVagueKeyValuePtr->Value->DataValue.CharPtr > + ) == 0) > + { > + break; > + } else { > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: %a is updated\n", __func__, > ThisConfigVagueKeyValuePtr->KeyNamePtr)); > + return FALSE; > + } > } else { > - return FALSE; > + DEBUG ((DEBUG_ERROR, "%a: NULL attribute (%a) value > detected!!\n", __func__, ThisConfigVagueKeyValuePtr->KeyNamePtr)); > } > } else if (ThisConfigVagueKeyValuePtr->Value->DataType == > RedfishCS_Vague_DataType_Int64) { > if (*ThisConfigVagueKeyValuePtr->Value->DataValue.Int64Ptr == > *ThisRedfishVagueKeyValuePtr->Value->DataValue.Int64Ptr) { > break; > } else { > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: %a is updated\n", __func__, > ThisConfigVagueKeyValuePtr->KeyNamePtr)); > return FALSE; > } > } else if (ThisConfigVagueKeyValuePtr->Value->DataType == > RedfishCS_Vague_DataType_Bool) { > if ((UINT8)*ThisConfigVagueKeyValuePtr->Value->DataValue.BoolPtr == > (UINT8)*ThisRedfishVagueKeyValuePtr->Value->DataValue.BoolPtr) { > break; > } else { > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: %a is updated\n", __func__, > ThisConfigVagueKeyValuePtr->KeyNamePtr)); > return FALSE; > } > } else { > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: %a unsupported type: 0x%x\n", > __func__, ThisConfigVagueKeyValuePtr->KeyNamePtr, > ThisConfigVagueKeyValuePtr->Value->DataType)); > return FALSE; > } > } > -- > 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111795): https://edk2.groups.io/g/devel/message/111795 Mute This Topic: https://groups.io/mt/102767547/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-