I think maybe the subject could be improved. I prefer to describe the
problem instead.

IntelFrameworkPkg FrameworkUefiLib: Fix ASSERT in CatVSPrint

Then, I think you can mention the r17740 regression in the main body
of the commit message.

I also have a suggestion below.

On 2015-07-07 17:46:35, Hao Wu wrote:
> BufferToReturn = AllocateCopyPool(SizeRequired, String);
> 
> The above using of AllocateCopyPool() will cause ASSERT if 'String' is
> NULL. Therefore, proper check for 'String' is needed.
> 
> The above using of AllocateCopyPool() will read contents out of the scope
> of 'String'. Potential risk for 'String' allocated at the boundary of
> memory region.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Hao Wu <hao.a...@intel.com>
> Reviewed-by: Qiu Shumin <shumin....@intel.com>
> ---
>  IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c 
> b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c
> index 9a9503e..c02e653 100644
> --- a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c
> +++ b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c
> @@ -754,12 +754,16 @@ CatVSPrint (
>      SizeRequired = sizeof(CHAR16) + (CharactersRequired * sizeof(CHAR16));
>    }
>  
> -  BufferToReturn = AllocateCopyPool(SizeRequired, String);
> +  BufferToReturn = AllocateZeroPool(SizeRequired);

What about something like this instead?

  if (String != NULL) {
    BufferToReturn = AllocateCopyPool(SizeRequired, String);
  } else {
    BufferToReturn = AllocatePool(SizeRequired);
    BufferToReturn[0] = L'\0';
  }

This prevents zero'ing the buffer and then copying over it, and if
String is NULL, it only null terminates the buffer rather than
zero'ing it entirely.

-Jordan

>  
>    if (BufferToReturn == NULL) {
>      return NULL;
>    }
>  
> +  if (String != NULL) {
> +    StrCpyS(BufferToReturn, SizeRequired, String);
> +  }
> +
>    UnicodeVSPrint(BufferToReturn + StrLen(BufferToReturn), 
> (CharactersRequired+1) * sizeof(CHAR16), FormatString, Marker);
>  
>    ASSERT(StrSize(BufferToReturn)==SizeRequired);
> -- 
> 1.9.5.msysgit.0
> 
> 
> ------------------------------------------------------------------------------
> Don't Limit Your Business. Reach for the Cloud.
> GigeNET's Cloud Solutions provide you with the tools and support that
> you need to offload your IT needs and focus on growing your business.
> Configured For All Businesses. Start Your Cloud Today.
> https://www.gigenetcloud.com/
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to