From 9d9761af50e538d983e00b1cb2d0ffcee261e552 Mon Sep 17 00:00:00 2001 From: Nickle Wang Date: Mon, 29 May 2023 11:49:39 +0800 Subject: RedfishPkg/RedfishPlatformConfigDxe: fix value type issue. Fix incorrect value type issue for checked-box op-code. When the variable for checked-box is defined as UINT8 in varstore structure, IFR compiler assign its value type to EFI_IFR_TYPE_NUM_SIZE_8 instead of EFI_IFR_TYPE_BOOLEAN. However, the value type for checked-box is boolean value. Redfish service may return error because of incorrect value type passed to BIOS attribute registry. Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy Reviewed-by: Abner Chang --- RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c index 1172d1094b..462f269f6a 100644 --- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c +++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c @@ -1221,6 +1221,16 @@ HiiValueToRedfishValue ( RedfishValue->Type = RedfishValueTypeString; break; case EFI_IFR_CHECKBOX_OP: + // + // There is case where HII driver defines UINT8 for checked-box opcode storage. + // IFR compiler will assign EFI_IFR_TYPE_NUM_SIZE_8 to its value type instead of + // EFI_IFR_TYPE_BOOLEAN. We do a patch here and use boolean value type for this + // case. + // + if (Value->Type != EFI_IFR_TYPE_BOOLEAN) { + Value->Type = EFI_IFR_TYPE_BOOLEAN; + } + case EFI_IFR_NUMERIC_OP: Status = HiiValueToRedfishNumeric (Value, RedfishValue); if (EFI_ERROR (Status)) { -- cgit v1.2.3