[edk2-devel] [PATCH] uefi-sct/SctPkg: Correct issue with memory protection enabled.

Jeff Brasen jbrasen at nvidia.com
Tue Sep 22 22:13:27 UTC 2020


Any comments on this change?


Thanks,

Jeff

________________________________
From: Jeff Brasen <jbrasen at nvidia.com>
Sent: Friday, September 11, 2020 11:23 AM
To: devel at edk2.groups.io <devel at edk2.groups.io>
Cc: Jeff Brasen <jbrasen at 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 at 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



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#65475): https://edk2.groups.io/g/devel/message/65475
Mute This Topic: https://groups.io/mt/76784632/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/20200922/614dbf6a/attachment.htm>


More information about the edk2-devel-archive mailing list