Any comments on this change?

Thanks,

Jeff


From: Jeff Brasen <jbrasen@nvidia.com>
Sent: Friday, September 11, 2020 11:23 AM
To: devel@edk2.groups.io <devel@edk2.groups.io>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Subject: [PATCH] uefi-sct/SctPkg: Correct issue with memory protection enabled.
 
On systems with memory protection enabled the modification of local
function initialization data results in permission issue. Make a copy of
data prior to modification.

Signed-off-by: Jeff Brasen <jbrasen@nvidia.com>
---
 .../UnicodeCollationBBTestFunction.c          | 38 ++++++++++---------
 .../UnicodeCollation2BBTestFunction.c         | 38 ++++++++++---------
 2 files changed, 42 insertions(+), 34 deletions(-)

diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UnicodeCollation/BlackBoxTest/UnicodeCollationBBTestFunction.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UnicodeCollation/BlackBoxTest/UnicodeCollationBBTestFunction.c
index 6fa11e6c..e0b4c1d9 100644
--- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UnicodeCollation/BlackBoxTest/UnicodeCollationBBTestFunction.c
+++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UnicodeCollation/BlackBoxTest/UnicodeCollationBBTestFunction.c
@@ -25,7 +25,7 @@ Abstract:
 --*/

 

 

-#include "SctLib.h"
+#include "SctLib.h"

 #include "UnicodeCollationBBTestMain.h"

 

 

@@ -337,6 +337,7 @@ BBTestStrLwrFunctionAutoTest (
                                         };

 

   CHAR16                               TestDataSav[MAX_SIZE_OF_STRING + 1];

+  CHAR16                               TestDataRw[MAX_SIZE_OF_STRING + 1];

 

 

 

@@ -368,14 +369,15 @@ BBTestStrLwrFunctionAutoTest (
     //

     // Backup current test data

     //

+    CopyUnicodeString (TestDataRw, TestData[Index]);

     CopyUnicodeString (TestDataSav, TestData[Index]);

 

     //

     // For each test data, test the StrLwr functionality.

     //

-    UnicodeCollation->StrLwr (UnicodeCollation, TestData[Index]);

+    UnicodeCollation->StrLwr (UnicodeCollation, TestDataRw);

 

-    if (CheckStrLwr (TestDataSav, TestData[Index])) {

+    if (CheckStrLwr (TestDataSav, TestDataRw)) {

       AssertionType = EFI_TEST_ASSERTION_PASSED;

     } else {

       AssertionType = EFI_TEST_ASSERTION_FAILED;

@@ -390,15 +392,15 @@ BBTestStrLwrFunctionAutoTest (
                    __FILE__,

                    (UINTN)__LINE__,

                    TestDataSav,

-                   TestData[Index]

+                   TestDataRw

                    );

 

 

-    CopyUnicodeString (TestDataSav, TestData[Index]);

-    UnicodeCollation->StrUpr (UnicodeCollation, TestData[Index]);

-    UnicodeCollation->StrLwr (UnicodeCollation, TestData[Index]);

+    CopyUnicodeString (TestDataSav, TestDataRw);

+    UnicodeCollation->StrUpr (UnicodeCollation, TestDataRw);

+    UnicodeCollation->StrLwr (UnicodeCollation, TestDataRw);

 

-    if (CheckStrEql (TestDataSav, TestData[Index])) {

+    if (CheckStrEql (TestDataSav, TestDataRw)) {

       AssertionType = EFI_TEST_ASSERTION_PASSED;

     } else {

       AssertionType = EFI_TEST_ASSERTION_FAILED;

@@ -413,7 +415,7 @@ BBTestStrLwrFunctionAutoTest (
                    __FILE__,

                    (UINTN)__LINE__,

                    TestDataSav,

-                   TestData[Index]

+                   TestDataRw

                    );

   };

 

@@ -458,6 +460,7 @@ BBTestStrUprFunctionAutoTest (
                                         };

 

   CHAR16                               TestDataSav[MAX_SIZE_OF_STRING + 1];

+  CHAR16                               TestDataRw[MAX_SIZE_OF_STRING + 1];

 

 

 

@@ -490,13 +493,14 @@ BBTestStrUprFunctionAutoTest (
     // Backup current test data

     //

     CopyUnicodeString (TestDataSav, TestData[Index]);

+    CopyUnicodeString (TestDataRw, TestData[Index]);

 

     //

     // For each test data, test the StrUpr functionality.

     //

-    UnicodeCollation->StrUpr (UnicodeCollation, TestData[Index]);

+    UnicodeCollation->StrUpr (UnicodeCollation, TestDataRw);

 

-    if (CheckStrUpr (TestDataSav, TestData[Index])) {

+    if (CheckStrUpr (TestDataSav, TestDataRw)) {

       AssertionType = EFI_TEST_ASSERTION_PASSED;

     } else {

       AssertionType = EFI_TEST_ASSERTION_FAILED;

@@ -511,14 +515,14 @@ BBTestStrUprFunctionAutoTest (
                    __FILE__,

                    (UINTN)__LINE__,

                    TestDataSav,

-                   TestData[Index]

+                   TestDataRw

                    );

 

-    CopyUnicodeString (TestDataSav, TestData[Index]);

-    UnicodeCollation->StrLwr (UnicodeCollation, TestData[Index]);

-    UnicodeCollation->StrUpr (UnicodeCollation, TestData[Index]);

+    CopyUnicodeString (TestDataSav, TestDataRw);

+    UnicodeCollation->StrLwr (UnicodeCollation, TestDataRw);

+    UnicodeCollation->StrUpr (UnicodeCollation, TestDataRw);

 

-    if (CheckStrEql (TestDataSav, TestData[Index])) {

+    if (CheckStrEql (TestDataSav, TestDataRw)) {

       AssertionType = EFI_TEST_ASSERTION_PASSED;

     } else {

       AssertionType = EFI_TEST_ASSERTION_FAILED;

@@ -533,7 +537,7 @@ BBTestStrUprFunctionAutoTest (
                    __FILE__,

                    (UINTN)__LINE__,

                    TestDataSav,

-                   TestData[Index]

+                   TestDataRw

                    );

   };

 

diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UnicodeCollation2/BlackBoxTest/UnicodeCollation2BBTestFunction.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UnicodeCollation2/BlackBoxTest/UnicodeCollation2BBTestFunction.c
index 653b263a..19ff6764 100644
--- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UnicodeCollation2/BlackBoxTest/UnicodeCollation2BBTestFunction.c
+++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UnicodeCollation2/BlackBoxTest/UnicodeCollation2BBTestFunction.c
@@ -25,7 +25,7 @@ Abstract:
 --*/

 

 

-#include "SctLib.h"
+#include "SctLib.h"

 #include "UnicodeCollation2BBTestMain.h"

 

 STATIC CONST STRICOLL_TEST_DATA_FIELD             mStriCollTestData[] ={

@@ -335,6 +335,7 @@ BBTestStrLwrFunctionAutoTest (
                                         };

 

   CHAR16                               TestDataSav[MAX_SIZE_OF_STRING + 1];

+  CHAR16                               TestDataRw[MAX_SIZE_OF_STRING + 1];

 

 

 

@@ -367,13 +368,14 @@ BBTestStrLwrFunctionAutoTest (
     // Backup current test data

     //

     CopyUnicodeString (TestDataSav, TestData[Index]);

+    CopyUnicodeString (TestDataRw, TestData[Index]);

 

     //

     // For each test data, test the StrLwr functionality.

     //

-    UnicodeCollation->StrLwr (UnicodeCollation, TestData[Index]);

+    UnicodeCollation->StrLwr (UnicodeCollation, TestDataRw);

 

-    if (CheckStrLwr (TestDataSav, TestData[Index])) {

+    if (CheckStrLwr (TestDataSav, TestDataRw)) {

       AssertionType = EFI_TEST_ASSERTION_PASSED;

     } else {

       AssertionType = EFI_TEST_ASSERTION_FAILED;

@@ -388,15 +390,15 @@ BBTestStrLwrFunctionAutoTest (
                    __FILE__,

                    (UINTN)__LINE__,

                    TestDataSav,

-                   TestData[Index]

+                   TestDataRw

                    );

 

 

-    CopyUnicodeString (TestDataSav, TestData[Index]);

-    UnicodeCollation->StrUpr (UnicodeCollation, TestData[Index]);

-    UnicodeCollation->StrLwr (UnicodeCollation, TestData[Index]);

+    CopyUnicodeString (TestDataSav, TestDataRw);

+    UnicodeCollation->StrUpr (UnicodeCollation, TestDataRw);

+    UnicodeCollation->StrLwr (UnicodeCollation, TestDataRw);

 

-    if (CheckStrEql (TestDataSav, TestData[Index])) {

+    if (CheckStrEql (TestDataSav, TestDataRw)) {

       AssertionType = EFI_TEST_ASSERTION_PASSED;

     } else {

       AssertionType = EFI_TEST_ASSERTION_FAILED;

@@ -411,7 +413,7 @@ BBTestStrLwrFunctionAutoTest (
                    __FILE__,

                    (UINTN)__LINE__,

                    TestDataSav,

-                   TestData[Index]

+                   TestDataRw

                    );

   };

 

@@ -456,6 +458,7 @@ BBTestStrUprFunctionAutoTest (
                                         };

 

   CHAR16                               TestDataSav[MAX_SIZE_OF_STRING + 1];

+  CHAR16                               TestDataRw[MAX_SIZE_OF_STRING + 1];

 

 

 

@@ -488,13 +491,14 @@ BBTestStrUprFunctionAutoTest (
     // Backup current test data

     //

     CopyUnicodeString (TestDataSav, TestData[Index]);

+    CopyUnicodeString (TestDataRw, TestData[Index]);

 

     //

     // For each test data, test the StrUpr functionality.

     //

-    UnicodeCollation->StrUpr (UnicodeCollation, TestData[Index]);

+    UnicodeCollation->StrUpr (UnicodeCollation, TestDataRw);

 

-    if (CheckStrUpr (TestDataSav, TestData[Index])) {

+    if (CheckStrUpr (TestDataSav, TestDataRw)) {

       AssertionType = EFI_TEST_ASSERTION_PASSED;

     } else {

       AssertionType = EFI_TEST_ASSERTION_FAILED;

@@ -509,14 +513,14 @@ BBTestStrUprFunctionAutoTest (
                    __FILE__,

                    (UINTN)__LINE__,

                    TestDataSav,

-                   TestData[Index]

+                   TestDataRw

                    );

 

-    CopyUnicodeString (TestDataSav, TestData[Index]);

-    UnicodeCollation->StrLwr (UnicodeCollation, TestData[Index]);

-    UnicodeCollation->StrUpr (UnicodeCollation, TestData[Index]);

+    CopyUnicodeString (TestDataSav, TestDataRw);

+    UnicodeCollation->StrLwr (UnicodeCollation, TestDataRw);

+    UnicodeCollation->StrUpr (UnicodeCollation, TestDataRw);

 

-    if (CheckStrEql (TestDataSav, TestData[Index])) {

+    if (CheckStrEql (TestDataSav, TestDataRw)) {

       AssertionType = EFI_TEST_ASSERTION_PASSED;

     } else {

       AssertionType = EFI_TEST_ASSERTION_FAILED;

@@ -531,7 +535,7 @@ BBTestStrUprFunctionAutoTest (
                    __FILE__,

                    (UINTN)__LINE__,

                    TestDataSav,

-                   TestData[Index]

+                   TestDataRw

                    );

   };

 

--
2.25.1