On 04/30/15 14:04, Ard Biesheuvel wrote:
> InternalData may not be aligned to the size of the type
> we are writing, so use WriteUnalignedXX() instead.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  MdeModulePkg/Universal/PCD/Dxe/Service.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/MdeModulePkg/Universal/PCD/Dxe/Service.c 
> b/MdeModulePkg/Universal/PCD/Dxe/Service.c
> index 9b4701bdd749..f071fc58361b 100644
> --- a/MdeModulePkg/Universal/PCD/Dxe/Service.c
> +++ b/MdeModulePkg/Universal/PCD/Dxe/Service.c
> @@ -1259,15 +1259,15 @@ SetWorker (
>            break;
>  
>          case sizeof(UINT16):
> -          *((UINT16 *) InternalData) = *((UINT16 *) Data);
> +          WriteUnaligned16 (InternalData, *((UINT16 *) Data));
>            break;
>  
>          case sizeof(UINT32):
> -          *((UINT32 *) InternalData) = *((UINT32 *) Data);
> +          WriteUnaligned32 (InternalData, *((UINT32 *) Data));
>            break;
>  
>          case sizeof(UINT64):
> -          *((UINT64 *) InternalData) = *((UINT64 *) Data);
> +          WriteUnaligned64 (InternalData, *((UINT64 *) Data));
>            break;
>  
>          default:
> 

What guarantees that you can dereference Data, for reading? Shouldn't
the pattern be:

WriteUnalignedXX (InternalData, ReadUnalignedXX (Data));

(The reason why this isn't necessary could be obvious from the code, but
you surely don't expect me to look at the code, do you. :))

Laszlo

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to