[edk2-devel] [PATCH v1 19/19] MdePkg: Initialise VA_LIST variables before use

Alexei Fedorov Alexei.Fedorov at arm.com
Fri Aug 23 11:48:25 UTC 2019


Reviewed-by: Alexei Fedorov <Alexei.Fedorov at arm.com>


Alexei

________________________________
From: Sami Mujawar <sami.mujawar at arm.com>
Sent: 23 August 2019 11:55
To: devel at edk2.groups.io <devel at edk2.groups.io>
Cc: Sami Mujawar <Sami.Mujawar at arm.com>; Alexei Fedorov <Alexei.Fedorov at arm.com>; ard.biesheuvel at linaro.org <ard.biesheuvel at linaro.org>; leif.lindholm at linaro.org <leif.lindholm at linaro.org>; Matteo Carlini <Matteo.Carlini at arm.com>; michael.d.kinney at intel.com <michael.d.kinney at intel.com>; liming.gao at intel.com <liming.gao at intel.com>; nd <nd at arm.com>
Subject: [PATCH v1 19/19] MdePkg: Initialise VA_LIST variables before use

The VS2017 compiler reports 'warning C6001: Using
uninitialized memory 'Marker'.' for VA_LIST
variables.

To fix this issue declare a VA_LIST global variable
and use this to initialise VA_LIST variables before
use.

Note: The VA_LIST cannot be assigned a NULL value
because some compilers define VA_LIST to be a
structure.

Signed-off-by: Sami Mujawar <sami.mujawar at arm.com>
---
 MdePkg/Library/BaseLib/SwitchStack.c           | 9 +++++++++
 MdePkg/Library/BasePrintLib/PrintLib.c         | 5 +++++
 MdePkg/Library/BasePrintLib/PrintLibInternal.c | 9 +++++++++
 3 files changed, 23 insertions(+)

diff --git a/MdePkg/Library/BaseLib/SwitchStack.c b/MdePkg/Library/BaseLib/SwitchStack.c
index cb9f69f1eaceba690b48e9ca6b8a9af2e348bddd..e1bb524819b3de3521c5461ce681aa3a6c186f2c 100644
--- a/MdePkg/Library/BaseLib/SwitchStack.c
+++ b/MdePkg/Library/BaseLib/SwitchStack.c
@@ -2,12 +2,20 @@
   Switch Stack functions.

   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2019, ARM Ltd. All rights reserved.<BR>
   SPDX-License-Identifier: BSD-2-Clause-Patent

 **/

 #include "BaseLibInternals.h"

+//
+// Declare a VA_LIST global variable that is used to initialise VA_LIST
+// variables before use. The VA_LIST cannot be assigned a NULL value
+// because some compilers define VA_LIST to be a structure.
+//
+STATIC VA_LIST gNullVaList;
+
 /**
   Transfers control to a function starting with a new stack.

@@ -57,6 +65,7 @@ SwitchStack (
   //
   ASSERT (((UINTN)NewStack & (CPU_STACK_ALIGNMENT - 1)) == 0);

+  Marker = gNullVaList;
   VA_START (Marker, NewStack);

   InternalSwitchStack (EntryPoint, Context1, Context2, NewStack, Marker);
diff --git a/MdePkg/Library/BasePrintLib/PrintLib.c b/MdePkg/Library/BasePrintLib/PrintLib.c
index af771652e4b0aebd616973ba1089ae5bc2b6f0c0..67c5f3dd547cea5447075ef88d697879883ba5ab 100644
--- a/MdePkg/Library/BasePrintLib/PrintLib.c
+++ b/MdePkg/Library/BasePrintLib/PrintLib.c
@@ -3,6 +3,7 @@

   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
   Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
+  Copyright (c) 2019, ARM Ltd. All rights reserved.<BR>
   SPDX-License-Identifier: BSD-2-Clause-Patent

 **/
@@ -177,6 +178,7 @@ UnicodeSPrint (
   VA_LIST Marker;
   UINTN   NumberOfPrinted;

+  Marker = gNullVaList;
   VA_START (Marker, FormatString);
   NumberOfPrinted = UnicodeVSPrint (StartOfBuffer, BufferSize, FormatString, Marker);
   VA_END (Marker);
@@ -337,6 +339,7 @@ UnicodeSPrintAsciiFormat (
   VA_LIST Marker;
   UINTN   NumberOfPrinted;

+  Marker = gNullVaList;
   VA_START (Marker, FormatString);
   NumberOfPrinted = UnicodeVSPrintAsciiFormat (StartOfBuffer, BufferSize, FormatString, Marker);
   VA_END (Marker);
@@ -614,6 +617,7 @@ AsciiSPrint (
   VA_LIST Marker;
   UINTN   NumberOfPrinted;

+  Marker = gNullVaList;
   VA_START (Marker, FormatString);
   NumberOfPrinted = AsciiVSPrint (StartOfBuffer, BufferSize, FormatString, Marker);
   VA_END (Marker);
@@ -774,6 +778,7 @@ AsciiSPrintUnicodeFormat (
   VA_LIST Marker;
   UINTN   NumberOfPrinted;

+  Marker = gNullVaList;
   VA_START (Marker, FormatString);
   NumberOfPrinted = AsciiVSPrintUnicodeFormat (StartOfBuffer, BufferSize, FormatString, Marker);
   VA_END (Marker);
diff --git a/MdePkg/Library/BasePrintLib/PrintLibInternal.c b/MdePkg/Library/BasePrintLib/PrintLibInternal.c
index b6ec5ac4fbb98982f8ccaf3908c2a91ce583e31e..11392f2a5d12eb059611c3ff77b27b602f9b9a40 100644
--- a/MdePkg/Library/BasePrintLib/PrintLibInternal.c
+++ b/MdePkg/Library/BasePrintLib/PrintLibInternal.c
@@ -2,12 +2,20 @@
   Print Library internal worker functions.

   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2019, ARM Ltd. All rights reserved.<BR>
   SPDX-License-Identifier: BSD-2-Clause-Patent

 **/

 #include "PrintLibInternal.h"

+//
+// Declare a VA_LIST global variable that is used to initialise VA_LIST
+// variables before use. The VA_LIST cannot be assigned a NULL value
+// because some compilers define VA_LIST to be a structure.
+//
+extern VA_LIST gNullVaList;
+
 #define WARNING_STATUS_NUMBER         5
 #define ERROR_STATUS_NUMBER           33

@@ -1256,6 +1264,7 @@ BasePrintLibSPrint (
   VA_LIST  Marker;
   UINTN    NumberOfPrinted;

+  Marker = gNullVaList;
   VA_START (Marker, FormatString);
   NumberOfPrinted = BasePrintLibSPrintMarker (StartOfBuffer, BufferSize, Flags, FormatString, Marker, NULL);
   VA_END (Marker);
--
'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'


IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#46283): https://edk2.groups.io/g/devel/message/46283
Mute This Topic: https://groups.io/mt/32999803/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20190823/6b756686/attachment.htm>


More information about the edk2-devel-archive mailing list