From 2e4e41d0121ceda6907d17948b9b1b200c68c9bc Mon Sep 17 00:00:00 2001 From: Abner Chang Date: Thu, 21 Mar 2024 19:35:39 +0800 Subject: RedfishPkg/RedfishPlatformConfigDxe: HII string is deleted unexpectedly Add the condition check when delete HII string. Only when the HiiStatement operand equal to "EFI_IFR_STRING_OP" and the statement value type = EFI_IFR_TYPE_STRING. Signed-off-by: Abner Chang Co-authored-by: Nickle Wang Cc: Igor Kulchytskyy Reviewed-by: Nickle Wang Reviewed-by: Igor Kulchytskyy --- RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c index 99e7827eea..86f5d3c447 100644 --- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c +++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c @@ -1873,8 +1873,11 @@ RedfishPlatformConfigSetStatementCommon ( DEBUG ((DEBUG_ERROR, "%a: failed to save question value: %r\n", __func__, Status)); } - if (StatementValue->Value.string != 0) { - HiiDeleteString (StatementValue->Value.string, TargetStatement->ParentForm->ParentFormset->HiiHandle); + if ((TargetStatement->HiiStatement->Operand == EFI_IFR_STRING_OP) && (StatementValue->Type == EFI_IFR_TYPE_STRING)) { + if (StatementValue->Value.string != 0) { + // Delete HII string which was created for HII statement operand = EFI_IFR_STRING_OP and Type = EFI_IFR_TYPE_STRING. + HiiDeleteString (StatementValue->Value.string, TargetStatement->ParentForm->ParentFormset->HiiHandle); + } } return Status; -- cgit v1.2.3