Hi Mike,
Thanks for incorporating my suggestion to address memory issue. For the name "CollectionUri", I know this is from my suggestion, but I think Abner is right. Could you please change it to "BiosUri" or "ResourceUri" since BIOS resource
is not a Redfish collection?
@Abner Chang please comment here if you have other naming preference.
Thanks,
Nickle
> -----Original Message-----
> From: Mike Maslenkin <mike.maslenkin@gmail.com>
> Sent: Wednesday, February 21, 2024 8:13 AM
> To: devel@edk2.groups.io
> Cc: Mike Maslenkin <mike.maslenkin@gmail.com>; Nickle Wang
> <nicklew@nvidia.com>; Abner Chang <abner.chang@amd.com>; Igor Kulchytskyy
> <igork@ami.com>
> Subject: [PATCH 2/4] RedfishClientPkg: refine
> RedfishExternalResourceResourceFeatureCallback
>
> External email: Use caution opening links or attachments
>
>
> Use local variable for CollectionUri passed to HandleResource() to avoid problems
> in case of Private->Uri is overriden down the call stack.
>
> Suggested-by: Nickle Wang <nicklew@nvidia.com>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Nickle Wang <nicklew@nvidia.com>
> Cc: Igor Kulchytskyy <igork@ami.com>
> Signed-off-by: Mike Maslenkin <mike.maslenkin@gmail.com>
> ---
> RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c
> b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c
> index f40f2d85af80..396ec22969b5 100644
> --- a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c
> +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c
> @@ -670,6 +670,7 @@ RedfishExternalResourceResourceFeatureCallback (
> REDFISH_SERVICE RedfishService;
>
> REDFISH_RESOURCE_COMMON_PRIVATE *Private;
>
> EFI_STRING ResourceUri;
>
> + EFI_STRING CollectionUri;
>
>
>
> if (FeatureAction != CallbackActionStartOperation) {
>
> return EFI_UNSUPPORTED;
>
> @@ -707,19 +708,19 @@ RedfishExternalResourceResourceFeatureCallback (
> //
>
> // Initialize collection path
>
> //
>
> - Private->Uri = RedfishGetUri (ResourceUri);
>
> - if (Private->Uri == NULL) {
>
> + CollectionUri = RedfishGetUri (ResourceUri);
>
> + if (CollectionUri == NULL) {
>
> ASSERT (FALSE);
>
> FreePool (ResourceUri);
>
> return EFI_OUT_OF_RESOURCES;
>
> }
>
>
>
> - Status = HandleResource (Private, Private->Uri);
>
> + Status = HandleResource (Private, CollectionUri);
>
> if (EFI_ERROR (Status)) {
>
> - DEBUG ((DEBUG_ERROR, "%a, process external resource: %a failed: %r\n",
> __func__, Private->Uri, Status));
>
> + DEBUG ((DEBUG_ERROR, "%a, process external resource: %s failed:
> + %r\n", __func__, CollectionUri, Status));
>
> }
>
>
>
> - FreePool (Private->Uri);
>
> + FreePool (CollectionUri);
>
> FreePool (ResourceUri);
>
> return Status;
>
> }
>
> --
> 2.32.0 (Apple Git-132)