Hey Bruce,

Sorry if I am wasting your time, but where exactly is the problem?

I don't think these strings can ever be statically allocated. If pointers to 
stack variables were used, the strings would be theoretically invalid the 
moment the exposing function returns. Furthermore they can't be part oft he 
struct itself as that would change the offsets of all other members after the 
string. Hence I think it can be concluded they are always dynamically allocated.
And as one can be sure they are dynamically allocated, I think it's the task of 
the function that uninstalls the protocol to free the two buffers. Should the 
protocol not be uninstalled till ExitBootServices(), it doesn't matter either 
because the OS loader may treat Boot Services code and data as free space.

Did I miss something?

Regards,
Marvin.

> -----Original Message-----
> From: edk2-devel [mailto:[email protected]] On Behalf Of
> Bruce Cran
> Sent: Thursday, July 7, 2016 9:36 PM
> To: [email protected]
> Subject: [edk2] Firmware Management Protocol: CHAR16* fields in
> EFI_FIRMWARE_IMAGE_DESCRIPTOR
> 
> Before I go hassling the USWG, I thought I'd check here in case anyone
> knows.
> 
> In the Firmware Management Protocol introduced in UEFI 2.3, there's a
> EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that has two CHAR16* fields,
> 'ImageIdName' and 'VersionName'. The UEFI spec doesn't say anything
> about memory allocation, but they're strings that at least in our driver are
> dynamically allocated.
> 
> Since there's no FMP 'cleanup' function, I'm wondering if there was some
> sort of mistake specifying those, because I don't see a way to avoid leaking
> memory.
> 
> --
> Bruce Cran
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to