Any comments on this change? Thanks, Jeff ________________________________ From: Jeff Brasen Sent: Friday, September 11, 2020 11:23 AM To: devel@edk2.groups.io Cc: Jeff Brasen 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 --- .../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