From abd0cd500ec58883156d518ddb01a992d24eb7c2 Mon Sep 17 00:00:00 2001 From: Shaopeng Li Date: Wed, 6 Jul 2022 23:02:02 -0700 Subject: [PATCH 1/6] * FEATURE: Add BA3031.EnableSafeStackWithClang. --- docs/BinSkimRules.md | 22 +++++ .../BA3031.EnableSafeStackWithClang.cs | 90 ++++++++++++++++++ src/BinSkim.Rules/RuleIds.cs | 1 + src/BinSkim.Rules/RuleResources.Designer.cs | 27 ++++++ src/BinSkim.Rules/RuleResources.resx | 9 ++ src/BinSkim.Sdk/MetadataConditions.cs | 1 + src/BinSkim.Sdk/SdkResources.Designer.cs | 9 ++ src/BinSkim.Sdk/SdkResources.resx | 3 + src/ReleaseHistory.md | 4 + ...64_RustC_Rust_debuginfo2_v1.58.1.exe.sarif | 4 +- .../Expected/clang.elf.objectivec.dwarf.sarif | 43 +++++++++ .../Fail/clang.10.elf.c.no_safe_stack | Bin 0 -> 17656 bytes .../Fail/clang.10.elf.cpp.no_safe_stack | Bin 0 -> 33504 bytes .../Fail/clang.11.elf.c.no_safe_stack | Bin 0 -> 17656 bytes .../Fail/clang.11.elf.cpp.no_safe_stack | Bin 0 -> 33528 bytes .../Fail/clang.12.elf.c.no_safe_stack | Bin 0 -> 17656 bytes .../Fail/clang.12.elf.cpp.no_safe_stack | Bin 0 -> 33536 bytes .../Fail/clang.13.elf.c.no_safe_stack | Bin 0 -> 17656 bytes .../Fail/clang.13.elf.cpp.no_safe_stack | Bin 0 -> 32168 bytes .../Fail/clang.14.elf.c.no_safe_stack | Bin 0 -> 17856 bytes .../Fail/clang.14.elf.cpp.no_safe_stack | Bin 0 -> 32352 bytes .../Fail/clang.7.elf.c.no_safe_stack | Bin 0 -> 18168 bytes .../Fail/clang.7.elf.cpp.no_safe_stack | Bin 0 -> 38080 bytes .../Fail/clang.8.elf.c.no_safe_stack | Bin 0 -> 17800 bytes .../Fail/clang.8.elf.cpp.no_safe_stack | Bin 0 -> 33632 bytes .../Fail/clang.9.elf.c.no_safe_stack | Bin 0 -> 17736 bytes .../Fail/clang.9.elf.cpp.no_safe_stack | Bin 0 -> 33592 bytes .../NotApplicable/gcc.object_file.o | Bin 0 -> 1712 bytes .../Pass/clang.10.elf.c.safe_stack | Bin 0 -> 20304 bytes .../Pass/clang.10.elf.cpp.safe_stack | Bin 0 -> 36168 bytes .../Pass/clang.11.elf.c.safe_stack | Bin 0 -> 20304 bytes .../Pass/clang.11.elf.cpp.safe_stack | Bin 0 -> 36192 bytes .../Pass/clang.12.elf.c.safe_stack | Bin 0 -> 20304 bytes .../Pass/clang.12.elf.cpp.safe_stack | Bin 0 -> 36200 bytes .../Pass/clang.13.elf.c.safe_stack | Bin 0 -> 20304 bytes .../Pass/clang.13.elf.cpp.safe_stack | Bin 0 -> 34832 bytes .../Pass/clang.14.elf.c.safe_stack | Bin 0 -> 20496 bytes .../Pass/clang.14.elf.cpp.safe_stack | Bin 0 -> 39120 bytes .../Pass/clang.7.elf.c.safe_stack | Bin 0 -> 128992 bytes .../Pass/clang.7.elf.cpp.safe_stack | Bin 0 -> 153000 bytes .../Pass/clang.8.elf.c.safe_stack | Bin 0 -> 133648 bytes .../Pass/clang.8.elf.cpp.safe_stack | Bin 0 -> 149472 bytes .../Pass/clang.9.elf.c.safe_stack | Bin 0 -> 20376 bytes .../Pass/clang.9.elf.cpp.safe_stack | Bin 0 -> 40352 bytes .../RuleTests.cs | 17 ++++ 45 files changed, 228 insertions(+), 2 deletions(-) create mode 100644 src/BinSkim.Rules/ElfRules/BA3031.EnableSafeStackWithClang.cs create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.cpp.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.11.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.11.elf.cpp.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.12.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.12.elf.cpp.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.cpp.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.cpp.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.7.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.7.elf.cpp.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.8.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.8.elf.cpp.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.9.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.9.elf.cpp.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/NotApplicable/gcc.object_file.o create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.10.elf.c.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.10.elf.cpp.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.11.elf.c.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.11.elf.cpp.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.c.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.cpp.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.13.elf.c.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.13.elf.cpp.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.14.elf.c.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.14.elf.cpp.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.7.elf.c.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.7.elf.cpp.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.c.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.cpp.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.9.elf.c.safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.9.elf.cpp.safe_stack diff --git a/docs/BinSkimRules.md b/docs/BinSkimRules.md index 80fb1f0f5..c792af600 100644 --- a/docs/BinSkimRules.md +++ b/docs/BinSkimRules.md @@ -226,6 +226,28 @@ No checked functions are present/used when compiling '{0}', and it was compiled --- +## Rule `BA3031.EnableSafeStackWithClang` + +### Description + +The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. + +### Messages + +#### `Pass`: Pass + +'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows. + +#### `Error`: Error + +'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. + +#### `InvalidMetadata`: NotApplicable + +'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}. + +--- + ## Rule `BA5001.EnablePositionIndependentExecutableMachO` ### Description diff --git a/src/BinSkim.Rules/ElfRules/BA3031.EnableSafeStackWithClang.cs b/src/BinSkim.Rules/ElfRules/BA3031.EnableSafeStackWithClang.cs new file mode 100644 index 000000000..f298759c8 --- /dev/null +++ b/src/BinSkim.Rules/ElfRules/BA3031.EnableSafeStackWithClang.cs @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Generic; +using System.Composition; +using System.Linq; + +using ELFSharp.ELF; +using ELFSharp.ELF.Sections; + +using Microsoft.CodeAnalysis.BinaryParsers; +using Microsoft.CodeAnalysis.IL.Sdk; +using Microsoft.CodeAnalysis.Sarif; +using Microsoft.CodeAnalysis.Sarif.Driver; + +namespace Microsoft.CodeAnalysis.IL.Rules +{ + [Export(typeof(Skimmer)), Export(typeof(ReportingDescriptor))] + public class EnableSafeStackWithClang : ElfBinarySkimmer + { + // Symbol is the same for both C and C++, despite the "cpp" or "cc" in file name. + // Clang V7 - V9: "safestack.cc.o" + // Clang V10 - V14: "safestack.cpp.o" + private static readonly string[] symbolSafeStack = new string[] { "safestack.cpp.o", "safestack.cc.o" }; + + /// + /// BA3031 + /// + public override string Id => RuleIds.EnableSafeStackWithClang; + + /// + /// The SafeStack instrumentation pass protects programs by implementing two separate program stacks, + /// one for return addresses and local variables, and the other for everything else. + /// To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. + /// + public override MultiformatMessageString FullDescription => new MultiformatMessageString { Text = RuleResources.BA3031_EnableSafeStackWithClang_Description }; + + protected override IEnumerable MessageResourceNames => new string[] { + nameof(RuleResources.BA3031_Pass), + nameof(RuleResources.BA3031_Error), + nameof(RuleResources.NotApplicable_InvalidMetadata) + }; + + public override AnalysisApplicability CanAnalyzeElf(ElfBinary target, Sarif.PropertiesDictionary policy, out string reasonForNotAnalyzing) + { + IELF elf = target.ELF; + + if (elf.Type == FileType.Core || elf.Type == FileType.None || elf.Type == FileType.Relocatable) + { + reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrObject; + return AnalysisApplicability.NotApplicableToSpecifiedTarget; + } + + if (!target.Compilers.Any(c => c.Compiler == ElfCompilerType.Clang && c.Version.Major >= 7)) + { + reasonForNotAnalyzing = MetadataConditions.ElfNotBuiltWithClangV7OrLater; + return AnalysisApplicability.NotApplicableToSpecifiedTarget; + } + + reasonForNotAnalyzing = null; + return AnalysisApplicability.ApplicableToSpecifiedTarget; + } + + /// + /// Checks if SafeStack is enabled by Symbols. + /// + public override void Analyze(BinaryAnalyzerContext context) + { + IELF elf = context.ElfBinary().ELF; + + IEnumerable symbols = + ElfUtility.GetAllSymbols(elf).Where(sym => sym.Type == SymbolType.File); + + if (symbols.Any(s => symbolSafeStack.Contains(s.Name))) + { + context.Logger.Log(this, + RuleUtilities.BuildResult(ResultKind.Pass, context, null, + nameof(RuleResources.BA3031_Pass), + context.TargetUri.GetFileName())); + } + else + { + context.Logger.Log(this, + RuleUtilities.BuildResult(FailureLevel.Error, context, null, + nameof(RuleResources.BA3031_Error), + context.TargetUri.GetFileName())); + } + } + } +} diff --git a/src/BinSkim.Rules/RuleIds.cs b/src/BinSkim.Rules/RuleIds.cs index 7ab17dd45..c4515dd12 100644 --- a/src/BinSkim.Rules/RuleIds.cs +++ b/src/BinSkim.Rules/RuleIds.cs @@ -61,6 +61,7 @@ internal static class RuleIds // BA3012-3029 -- saved for future non-compiler/language specific checks. // Compiler/Language specific checks follow. public const string UseCheckedFunctionsWithGcc = "BA3030"; + public const string EnableSafeStackWithClang = "BA3031"; // Reporting checks public const string ReportPortableExecutableCompilerData = "BA4001"; diff --git a/src/BinSkim.Rules/RuleResources.Designer.cs b/src/BinSkim.Rules/RuleResources.Designer.cs index 812215713..3af641b77 100644 --- a/src/BinSkim.Rules/RuleResources.Designer.cs +++ b/src/BinSkim.Rules/RuleResources.Designer.cs @@ -1267,6 +1267,33 @@ internal static string BA3030_UseCheckedFunctionsWithGcc_Description { } } + /// + /// Looks up a localized string similar to The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines.. + /// + internal static string BA3031_EnableSafeStackWithClang_Description { + get { + return ResourceManager.GetString("BA3031_EnableSafeStackWithClang_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to '{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines.. + /// + internal static string BA3031_Error { + get { + return ResourceManager.GetString("BA3031_Error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to '{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows.. + /// + internal static string BA3031_Pass { + get { + return ResourceManager.GetString("BA3031_Pass", resourceCulture); + } + } + /// /// Looks up a localized string similar to This rule emits CSV data to the console for every compiler/language/version combination that's observed in any PDB-linked compiland.. /// diff --git a/src/BinSkim.Rules/RuleResources.resx b/src/BinSkim.Rules/RuleResources.resx index f1c575c50..8758beb81 100644 --- a/src/BinSkim.Rules/RuleResources.resx +++ b/src/BinSkim.Rules/RuleResources.resx @@ -573,4 +573,13 @@ Modules did not meet the criteria: {1} '{0}' was not evaluated because its PDB could not be loaded ({1}). + + The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. + + + '{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. + + + '{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows. + \ No newline at end of file diff --git a/src/BinSkim.Sdk/MetadataConditions.cs b/src/BinSkim.Sdk/MetadataConditions.cs index 7abb9c0e0..d921e0ac3 100644 --- a/src/BinSkim.Sdk/MetadataConditions.cs +++ b/src/BinSkim.Sdk/MetadataConditions.cs @@ -33,6 +33,7 @@ public static class MetadataConditions public static readonly string ImageIsResourceOnlyAssembly = SdkResources.MetadataCondition_ImageIsResourceOnlyAssembly; public static readonly string ElfNotBuiltWithGccV8OrLater = SdkResources.MetadataCondition_ElfNotBuiltWithGccV8OrLater; public static readonly string ImageIsKernelModeAndNot64Bit = SdkResources.MetadataCondition_ImageIsKernelModeAndNot64Bit; + public static readonly string ElfNotBuiltWithClangV7OrLater = SdkResources.MetadataCondition_ElfNotBuiltWithClangV7OrLater; public static readonly string ImageIsDotNetCoreBootstrapExe = SdkResources.MetadataCondition_ImageIsDotNetCoreBootstrapExe; public static readonly string ImageLikelyLoadsAs32BitProcess = SdkResources.MetadataCondition_ImageLikelyLoads32BitProcess; public static readonly string ElfNotBuiltWithDwarfDebugging = SdkResources.MetadataCondition_ElfNotBuiltWithDwarfDebugging; diff --git a/src/BinSkim.Sdk/SdkResources.Designer.cs b/src/BinSkim.Sdk/SdkResources.Designer.cs index 797d937cc..b15f50ad3 100644 --- a/src/BinSkim.Sdk/SdkResources.Designer.cs +++ b/src/BinSkim.Sdk/SdkResources.Designer.cs @@ -96,6 +96,15 @@ internal static string MetadataCondition_ElfIsCoreNoneOrObject { } } + /// + /// Looks up a localized string similar to not compiled with Clang v7 or later. + /// + internal static string MetadataCondition_ElfNotBuiltWithClangV7OrLater { + get { + return ResourceManager.GetString("MetadataCondition_ElfNotBuiltWithClangV7OrLater", resourceCulture); + } + } + /// /// Looks up a localized string similar to not compiled with Dwarf debugging. /// diff --git a/src/BinSkim.Sdk/SdkResources.resx b/src/BinSkim.Sdk/SdkResources.resx index 5d3f1043e..de1e71bfb 100644 --- a/src/BinSkim.Sdk/SdkResources.resx +++ b/src/BinSkim.Sdk/SdkResources.resx @@ -246,4 +246,7 @@ image is an ARM binary + + not compiled with Clang v7 or later + \ No newline at end of file diff --git a/src/ReleaseHistory.md b/src/ReleaseHistory.md index 081731df1..87bb1eec5 100644 --- a/src/ReleaseHistory.md +++ b/src/ReleaseHistory.md @@ -1,5 +1,9 @@ # BinSkim Release History +## Unreleased + +* FEATURE: Add BA3031.EnableSafeStackWithClang. [#663](https://github.com/microsoft/binskim/pull/663) + ## **v1.9.5** [NuGet Package](https://www.nuget.org/packages/Microsoft.CodeAnalysis.BinSkim/1.9.5) * Bump ELFSharp from 2.13.2 to 2.14.0. [#628](https://github.com/microsoft/binskim/pull/628) diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/Native_x64_RustC_Rust_debuginfo2_v1.58.1.exe.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/Native_x64_RustC_Rust_debuginfo2_v1.58.1.exe.sarif index 409adc3fb..6943aa758 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/Native_x64_RustC_Rust_debuginfo2_v1.58.1.exe.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/Native_x64_RustC_Rust_debuginfo2_v1.58.1.exe.sarif @@ -951,7 +951,7 @@ }, { "id": "BA2026", - "name": "EnableAdditionalSdlSecurityChecks", + "name": "EnableMicrosoftCompilerSdlSwitch", "fullDescription": { "text": "/sdl enables a superset of the baseline security checks provided by /GS and overrides /GS-. By default, /sdl is off. /sdl- disables the additional security checks." }, @@ -969,7 +969,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA2026EnableAdditionalSdlSecurityChecks" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA2026EnableMicrosoftCompilerSdlSwitch" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.elf.objectivec.dwarf.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.elf.objectivec.dwarf.sarif index 6a28dac22..5a65271ef 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.elf.objectivec.dwarf.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.elf.objectivec.dwarf.sarif @@ -133,6 +133,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 6, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.elf.objectivec.dwarf" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.elf.objectivec.dwarf", + "index": 0 + } + } + } + ] } ], "tool": { @@ -277,6 +298,28 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableSafeStackWithClang", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableSafeStackWithClang" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.c.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..c20560f446e6ec52b1b32bebf3b191de831f21f6 GIT binary patch literal 17656 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 I5nQVHH~YJG-2eap literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.cpp.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..ed1228a4b33962981abff7349a8a70932d1ffc69 GIT binary patch literal 33504 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 DNr`zE literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.11.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.11.elf.cpp.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..228aa4d6a3425073a8544da74f4a4881c801392d GIT binary patch literal 33528 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 TAGr?e|M8%**pcCoA&UP43x!wW literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.12.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.12.elf.c.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..afb631f08a8d4700f941be1e08141dbaea284613 GIT binary patch literal 17656 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 literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.c.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..4e602119d542148cfa6bd39e3a40ab3b2f10033d GIT binary patch literal 17656 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 HE>-*sZEJOM literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.cpp.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..ec04a3807863a7861ae20775cf67c2eb3bc27a45 GIT binary patch literal 32168 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 literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.c.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..5281bd4f9c0372ceaf80b982eef9592fc11d2206 GIT binary patch literal 17856 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 Bw@Ls2 literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.cpp.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..ef07048e81ab1cf328a91539963db8b86f5210d2 GIT binary patch literal 32352 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⁣T@sK9i1KD4o<`N>o$M=8|&5*O!ZJ( zve>5O1jIw(J)xlB(j$fv;uhgMLgAkT#zK)3>S#!Nv~4uh`{VYJQ1k~&5~0DFr8`4L zAv72dMdP8~p^!EdiVTIqL+FRv_7ZN7qaSV?x%0)3fFA)r0)7Pi2>223Bj88CkANQm zKLY=65zz3rS(17AJ~Y3($$FV6#hom_M&>U{-fAx2W{A`pndkSCuj9Ndr?npmm$x}t z2&#rief)W?NQtP-^P207%=0_Pdu9G=!2;MWHN9s`5^)qbY7JFEEnGD$$}7wmc6 zO7F3fta212+6<9mJRsH^I}p{Q8`eu0()koVOE_wkE4gAp z+oVVJSYK>F>$OvpmHvIB$qRp}0Nw%-s~ zPnl<));qfb&(6Fbd2HbDl4ss%3c^+O)^@eGUA^{K0c@o5?}jW(Pj1qB8v3)vDXTwU zDfO4i#rv$ZUFo+|mHYcEsR;|;3{T(R@0dCv#rMVmzJg6%2scGaz^G~L@_9$&`ZnCg zaht@Ap0!Y!=r(E+@fYo$SMf+{P4Q6uyP!rt zoxt~lMjW4>X@(mTX%){_{?5c*sN$CpN1EE>;Mms8&q@e3#jk~C*EJQ#Jb%~FSTA1X zjb{EM*!*VrYM}RzyrKf%?HWr|;Jcz1zrGQWITgOz0>7aJ-rWM%THrUfz}L3GZ)$x1Q@iQKrT1fUhFJXV1FrmOg{HZ>YVcZma8tfepbp0kj zJkKFplB2jOuy|ZOhIq5~x9Zo=gr60#;YI^fjnd4|)54@{Q9GYQT*29jcig@p?Y-mw z_X1yh9=#*{EFRAR?7#|)1HG9?!q@lRh--Mo_m1-wh=&pPj`L;YC$RW@Uro61+_>v& zfhVPZZ@qUSt~I(4xh&$#0}<%;oOe~i=_$Qt2s@rnK7=^+mtH|6vBVzWEb1_hpFxkG zQ)C|qK}n87j?X^n$B=lx^z$_06&5T_vSIkuP7^I6+rMzWZ89mzE!oNrwdITJ1I2GjaI)--qQi|-mWM|Y2yCbAkVGhmL~ zxjVjVY`C#Re4&OAetu_;CZvbN$UZQ4Cie`*ljfcsJNAzrFb~9slB48ReAkw)R7IP? zv@$6>CBJ$zjK+`LJfFaMi;3xc1BY%KK8V9GR*GgeRmkKmFvs?wRVG(3s}&2ovCsnQ zAefoFS+;P(m9j1JX6MpoDTg$3yi$?w#gx@F59}J2!2!K;e9BIZqqfVA&T~PAI_FRlx0(uEa;iz1@z}=yX=(6DRx7~#4>DaiU=}Q z%G;oej_9^^4AV3eu&gNJs#{rk@Ut1@a?W8mqrhQs8Xc#ma%rr!h`w;AiwYcP7!c5L zFiznZ!^T?U)k(8d9Y+QZU761nCW@R+jgObDqnyJ}JS|RRtT;K9O1nAe&puvS@Q0RW zabluk+4U+K>Lagsl*;l9{?8QM(ec#9dy6AHpXBeEy?1u9bqn25X)Vcoo_F&1yWTr1 zU)R{jMh~CorrQE9UdOc(3H&D-9_|6g#e;*VTs*BU9${{P~RJ^YZ{S5#o*iJ&4j;ocTP@ zo|k;CkK507tnWuYt?fC_^YJT^uZdcnW9)9fgy8{9P%N3x^Y(}guvk1{IoHqa;r>4) z`9r8l`1wRa^4X5~^bEtxKYP=hANCwD=Cj);JbYe%Tof+>IBQY1CGBnhlZa6j9DklafQBFn$IrBbr0F#}({!D2h&k}#k3Ul4Qi z!7#|od65K_MroHYkM(<4=H~M}REs*KR`s*Xk1;{Mxcxk@bDnxEw3qFvF1LJ&8Ny_B z^&;lqRY#lz^I5By;I!NH5$Vu-{(5b@TJV1%`Ej>XOndqC+{=p*(_eH-1k_zEpKD+BzjAb-e p;q#8KtMu%T&m9*X9+v~>H(Ze{^kl{J-e&yNW{2=o55bd#e*vI^l05(b literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.7.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.7.elf.cpp.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..39cd2a918d3a2f65baca59cd5bb8d932f5a00284 GIT binary patch literal 38080 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 Tvg*NPEB-fm;8c7BUl#raVV8Cn literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.8.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.8.elf.cpp.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..ba6b66e19cec0e4a2fe012561ed1b51cf33316d3 GIT binary patch literal 33632 zcmeHw3wTu3)%M;qNk}G_2@@n4QOE$fDP$4|0m5yPNnip20zp7Thsk6@MkX_1WZRUW!FsK>*4ozEs#UADUfQayTB}vQcdfn8%w$L&{lEYF|L6Ih zCkNj1?zQ$>`*!x(XP(s5Y>ZjJ%RmURL)41Ma zPylMmMazy8YgRmIzu=ZB-m}igSu?(*`?D1tckiP*QW+>cvZ0Oab#@%4wj2c*ZG#|h zy~xIX9XiMZ>KL7sA~-e+kVJz453o z7>~93TUu5^Hyz$VzhT|F%Dbw@+tN|*ZC}zc-5VMz7q^j1oj=kar&9K+0wT20@At+? zswKVOD7b&C&+Cf^wg%&<1x4su^!kEfv8b)J$-Q>1cY1YQYPfo~lDyNZr&Z5DbC}Q@ zGWh6caDR~qQxj5q*8uUVi_o1i#5-EI_p~Z>6|?vlGHnw74uHv?w*Di7Ih3kNABPVY zxL8m9D78O+mZCTMAQ>9Rk#t7iBYlZJzSOUE(xk@lx46q1C}iw@E|GAJle;L9v~G}Ddzww4!z#J@3HQr zG1cc0wm<#vOnX1{Jo@(qo<~13d*qXzUwsuHok(GnP9fc&^4~eHg{J)dMaOyezWvU2 z)Z)p^>Cng%A3H2RvVZ@aWEt8I(9Hdjj8e41SS0e!tzR8FRD1CF$E*`}LKI}*xTfv= zdE=%C(YU&G?~9GcweJ0-aaH5q{~YHzf9e>hJKCzgq+|Gw6TY5Dzcj}u)V{3!+xGsW zZSUWk_x`2v(3saeyC0LD*{}A$N5}Vs6C2kzp4fO&qc^oq+@3mL?iY!kK&2VkMp|H` z1x8w6qyTYj$ zSaAP3&OFD3it#hi4-XxpTkKWf$H8&%dhiY4K5*AZhYsBaJ_Gy;_+#*7tP0R`S=!|G zl|pVUl;iS7W$%N&5ITCsUkHEP$m7BEs6x`=wpmPp&Um&pnWBKLA7JeOED8!27L+Wu z<_=`<6bp`=bIkO~6G=_^gn&EYYbQlxLE)N$Y}Qk`&xU`g)~|z}(!2_|7WM(sFDxkh zwyCwCZe$y2fsqy%X@QXz7-@l#78q%Pkro(ffsqy%X@UP&EzpN&qO|qt_cmQx zHs1M5=kK$1@}0oD(qwu!k+wWVxKVR)C|}DZHYM}D7IemY&Es@D-51ezq$2T>evg^% z`DmkeZE4F;B(lve4t?^~p$G+BS~l(jD>GEQ@or;}j>l~(Zw0!7xmqsKe1v9$=s`4Z zc*LY(csR_mkuPo= zS+3Xd+Wr3<8Sj;+XIQU~_d?C9HFs-Hw_oITH+BAOeW5DR zax}edExDm3`ilx7f0NPnTo&r61e4jEu>fpdY`RWZGcq$Xa-}J1%F4Qo-mg8)l$CQm z1$LT7<(jsbWcE#T#75%sxs@U<`30s^O!p$Ftd&-X+-smJ&M;k(S19sE z%RHMYuP7sL%+8$|c}L(d9~zZ6b|<#2BL5kra%5&_!9#GcXV|4R+w};7*6j1gqW@a6 zzdfF5-&CdxA3`U#W?%GYri(vky5wk7&YFE`Ez@NSnJ!+93Z({n+<4jk* z%5-%mPF!pDHFlAq8$?%&7s!1tIQe1Ykq*O?yvjOoXPR!ZzAl}wMcGac|VJ$fe7V^=dhelOD# z&oMpu7pA8UF+E*?k;a<+vkInXTujd%&-C*s(=T>0J$EtFFK=Rc{z0Z+{haBA*Fc5Y zxpMDl;yigBbH03pd7Py36lRZ?)HsFN4oS^Ym_1oigA`_0YQHM&cMSWPt{R)Fakl>FdU>$%#2 z%!K{6+pU+=DI-;ZitqTL^|miKRW6{gTH7C@>T}>Zfjc( zg~U-mvf7+h8=ApZGl8jgI@2^aQ(Xtsj1!pZ{Y*1AG0l!KHSA`Zb1~E0?=j84hiSoM zOpVVnHND2<{(!0Z5Ys|y5#_$9n8`DNskMS>iIb^q0n^guOv}7X?GdIGrx6`7V-HjP zUZ$B>5tX=ZVQRdesp$zO_ph0n-(YI_fN9~EOp9`HnX#65>`bi{Op9kQEpaootzcT? zB|5UMmuTE+-(uQ%CeyAPna=tF)7}G2=RL=C{wquuywCLQFPQeZaW%A#yKpVjMZHWH zZ)3XTOr}dOWxDJ}rpq5*!&cB(iF2d_d)^XQXGkvdt>4s*e8;@tYDZupo z-Ap%M#dOQPOt(J4blYo8AAZdAk0WrowT}DP!Su;;bSUe%PitBFY$4OX&u033HPaUn zrvF?;G@f#;aIUt`+%ccz}Nn1ThkK3gZ8d^FRhsZ602Oud_!!lyAsE@kTb z0n_FKOwl))V*g=^kHI9!I-$RsY0FZkffJdwp3b!GLZ%&8GM#o4)6V;uPX9U6u9um1 zzt42W=S*i7VE$yCaMqDbd!{m-J)ddsiA?9jn9eHJHWzWqI>eGf2Q_yW^Ke`b16 zV2);;@X$D>hi5YVcp1}AdWj~l+{@H)71JudNKIaSBTH+3#B}^)Oeeg+wEhjI6F*@( zDFd@S>tt^c(}symzFMYE7n6TEQ`bpMfnKKW)0sBzW9s=XQ}7PZ(HF>X%ZigsuOlqS zPsN4*d^zDlLo?wb3SEQ?ohZ#bPs+-<(h-&sS?Q5EKY>TiPq7md3vhMqla=%3q|Gua zE88TEY8XbOn&qMQ{Njv4~vho&5Le7g^Pb%mx zS-C(?+AYtJl|PgVXPG8<40vop#n^`VV5Dw zOS5FPBYRXnnNH3b<1Dkxm()RXC`sWgx4dX#aV~VCq7nQ2R_vA+WY%OZdnvcpRzZfj z(}k__IMgS%KHFBsftiK2V>mFY#C9wPW|!KgaG;^mHkAW&YHZaUm^;hn3m#NP?J`8A=TDZQ2XT5+;n!{{_;7aOy%>kWU|ersMrI$ zX|CL3*{CV+ii-W@*j({lqJ`7*xntzdFJC+=JLxw@INL4%H2oSjIj_);3X$^$LZad& z?8{eVX4Fw^9UUs?O3Pd7z)@TdA3bM><#Q8z72w=fu60ESR+L~@MTX8*mU+sAJaiv8 z&eE)Olvxh>&Jgvh*I0HQrgg5h{4S-t%sk%mDvQo_mR3ovmvcVl%%Q6g5_L4nR9uc- z6}4d9btFE5iaAfPR4NayYnq#Ly=Af*Kz>cBRJ=q9u-l226)A3CK%bhMz%;XhvUHwg zdHb;D@mk(b>V$KHWtplVmw?Nx>+b8c>`_tNkV@WZI zIoQw243^9ee1+PI+1*4Lvo}&-%bwjsR4D3C-ekFVNPlO@;vcGTD)su_u;s^T1ynK4 zh~=b|2rf%~-)75$=}KqRGF3I?0!+zsxD%-(M(1Kf%;HOSM5@1Nh+9s+hI%A*DBg*N ze#`E3)fUT|bjJb9!`!$@N9R^clbLmcn?C1Jltt7%iG9Vh*i}7`UG27p?Up|#QVotABK zfE>7goPv-jKRqM6ZYMcWX3kxf9rB7ai`^L+4QE(>pH>+5cAjauP12B(Oi`blXIbu& zG+v}fH0-hLNj4#ugGAvx+tRE~9qOjSxfd6kp_;{cjwMT`6-6a*t|eDRa4a7+6>*-$ zni9cXMn#-&S(5Bu7&|Wbw&jdeMZ-SJ4avmFQ8Zj=`B_p$nTUpqEO#VT%IadvZ;~oy zb&2K6q$*hm)1}tzFVyX5hQ6)L;1l$=yTua0&36`9%2D=i1*?*=*P$nT8GuAqCvinkG4MWIRx&Ao9RhdGM= z6us&$++CXPnP1rO1l?xl7eja7=#qT8NZy-QmR|w+!O`}7C-{N9it_t2P5E;Wet7he zJV|*duPT2D=br-m$BK^SyndQjmwztg zCyJ(UUXSP1=YI$CQ$QB=qIyq-5Fe*p5EMctg?7J*{}*QV{el7N^`|@gcfoQ z5VT4uSd=O4L6bT|Jz3H|!=%=#+@qv@yNQp!DrvT~ zx0-o?r=4);Nc(CttxM#jC@s=HE}5-x=SusPs&y$5bvbkAN&Af{7th4ZNx1W+{c2@C zcuple1=2p>%q3Gz!L{P{SY(yy?OAP1JmZwEu{&W@!=bvC>|ctg3JqOZ&~LmOMX6 zUfn!Ur2Q8>V5divO8Y511xQ4QW{0%z;7dYMx0r4x zCdu)m7XK8Nn{w$`wfI>C%4BK5lF8CjAswHXa{d5~sG#+l=1S@KE%#T}xvQk(U+R2O z@-fo!?-aTDSn2pfiun}jcw3!8%6zJHysXTdusD;m2s=?nQFUzyR?yOryIMNxRA1&} z!Ksn8Xm(1+r(~?A{ZuF6u91#~DhE!Hlrx08RyuN2J}HHnCLK|wrQ`C$v!5v)wlo3YNlLOM=ND~P%U za<7z*&XgGLK)ReAa+P#EHe@D~j+3jU<7pL_%-g+2I=Y8SO=UJ|tvp^jo=x#ex-Py5 zv%qz7QccC>2vp6%JY_MBeJ9AW^5*rj%*%(0XX(u+%CbO;c#;_r( z-GrD!i;kk%C(G1iLV0w`GBqnuqFPQ z3M*|@6sn+51?yfW9j(k&UWDCJN$06tbBQeHYr!%adUO!&j38Z%mS-Rh6U{BkGummu zDuLWS9)XDn2(jW~XnoALuYc7=?$Ku&(#so;^q!}&C%8D}0Wzpio;&ElM;?eTB zN%7+IBs#QdwltUFp=q5km$eo(_l`do8aZZ6{ROg<~$Fw9(F zr}$CTFr>J-_67E7=oQ(SqP3`w#uN(RDQdM0mnoChBEu**L$(&_RN<3XiBylmN<;ow z_^>gw1qlHeTeAg~t^_F-axjyEqf<%;4_l&ixw9Y^>9XZgwtf_8Ork8T65@!YLKO~A z(^8$NLdEGeq%27)jXK$rDx;#5=aKkg6u0EKWIVa-p(B6PY(!$28&T!va%#rbq6PL+ zWH8=IErG)~AyXJJSmrLGqfu@g4M)PDiqQ zGRiVPHy4>#SozRZ7BW?pGaW;DbI!0hwm3zYB5^daQtN=-Ohi^wO1Zi75p){e!ze)w z*Fg0r#Mc(-)|oaI0Xo7$Os8dtx|y8m4C?LmiIzk2s8Y|YR^|!CEF)d4QK?=)J)prj zn1~=aH~<6$xsnMkDXUVQj+HlBO5Nfl_5`){2CG z3!RM%kKo2yWLPH>@uX^mXhkl%N2uf$Cyp&Dwgm0QN3BhpB{ErBEk}>DWw}bW+u0ux z)H9Z43R5w)FCD4nN6XqGvRa#aJQ8cCI2;MF!bpsI;L2n|;c_~mJC4TTN_vUac=aX| zFZAStrIcS3W&Ul6W_XwC-Sfg2Z27m-PzmmSUIjH`0Afp+neZ(k^Qh`4(blF2OE~OaCt_ za|J|GM!Co_(Z?!i8y#Z$^*5~YtMotd+<1uI47u)2F`MLx6P@jL3vxolD$1m_9KVf{UPk1}L z(Lgu8o)^aV@EYThUVMOWAQJ7Oh}gEUKhWhJ2*!Kxk-V;8MC_nX`wjIWK3_-6$|W5& zUJ>aFM1Ao{bRK{FuWgps8;k_msl&T566xwB{|9_B7;=;dY`uyZUDK7zIe1N*xl`oqrUXF zC#Z4d%Esfp9j)tHysM6HZ=o+6dVBHVLn=mG3&=TCSMwW>*Vmgif zu<8w4x(E8A=pRV6&uE(NL@0vS-MT}O0k1E*5eWE1G_cXj2a6>yx+AxM7q7u3GeM%N zq+4P}>WKnCrQ;5d(lG;m6u-9kAWi$Ai5A5$~liwFfAy z9mCo)>{l+FFg15f`^F<(B*i1$0u@!c#Uq=Pjx&o#`kA+OM=6JR1O@92^m4+)lrXp# zZN&lA9rYng)F|ffiBh6{ol#Cas%4zxDmg^sh*PX zVa%oPqZ;9F=383>hiD)az<{E>wLtDm@B!7Y$-5rz=&s5Y0f93z6yMets0^d(7>KHb z4$uil-*o-D6cfY#H?>|)*N7d1TI8GMR2LiY_2DbAaHr5Wtg(MfCu(b4lS(@y5&n$q zH)yMAHMmybQ?bdSQbSSG4WSkkhp*dqV^pP2-p-5$;yqEE?+Nd3(3UM26wRt96fP`JNW5cl=?!2WPN8Ul9(H)6^XjBSki`g*_^#sg6>5BJ3VVVwIx z41_*^0Njs1qNez*$}t{M4jBG)L?>Q=-Xu2nN8&i(y~5W?S5^H*Vqe_5xj%@jCx4$9 z^QdmbM1r&niOyKShw%C^|=AOs_C{(g4mBQiQ=ewk;M%0eM(QDhTl9BoyijZlSK$Lf=phg?xx& z9hXwOVdQLdM+b-oqEXT94@EG8 z>c&hFyJ$25Rd=XA*27aVR2|iZFEjQy+rxb2SJ!`NXnsa}j!9fWyVdm*^Pa#aL9-uD zBaS&TCJZ!Fqvqr;j{{1XViv$6jv8I0qJgjv*UM-C^Fq|hm|dt;ksQroKwH#YMqkKc zDmvcVN3$?oZ2OQ1&M?YKZ0Xi>h%E-IUWU1qk@^;0>ZC#?xFr_WJ}EIO3Wp5`nVJ?M z8mFkY4jA1X0oC6JRKG-&(esr#85`%ofN>HG7-xZ+e2|TC9t;>K!hq4?2NI`(E{Z@$ zG|mcbrLG@o9|f=X#c1l;veLhDiC-u|UoFxsrv*0S{=?rf%_{<%hcOAo4U-Uh8DHJf zQkkjFt3XRTC)F#oJhXK^&aRE|9x@gxIJ8|I{*s}Kta?{=)OrO;!x&PxYH9bA=`a@l zNZ&TYg2F?a8SU2Y@5Oz}P&KWc7LU;F07gZ+s;yiS#4$-KhH+v^KSV`qA8-MrUL})GW1h5_m0B6HsGk6EE5`Xh_ z3HV~*3gBMg0Pq~}d*DsrZ@_0jE*3w=1GRu3Y0L+EfDYgU(gCMI9|T{BHS0d`8NgWp z-YOOCSbD!4d<}3Ta5r!O_yzC^@E-6Pkcrio(ZB@23CsmrfOcRF-~~1UG2j$n4{#Z9 z4)VMa{6pYgU=wfS0Z#o()e8-Uw@`+$SMGr%jrd%$OagslY_0~`&M z15RKT-~v3ra$q%Z5)c4-fi1u`U?*@kK)-{rAGjX41z3){-3h)Q_zCbh@GS6a;AP+q z;9cM&;B(*(l*I&}T)+m{0S8b8)Bv-9CSWnJ8aN3E0sX*vz*WEnz@5OKfWHEz=#R$& zCjgy59M}Qe2K*j)2Pi=wJQ`>P)&Q3Qw*vP99|2|@S3DXJ#ef~yhvQZXrspEZ08@ZE zpdR=s@JrxT;C)~|-~yHcc(g7~1iU~m5CKjFP6Iqx$2=Q+8L%I?7Pua`6}TO^4|o80 z6nGAJ1$Ynm4EP+#hQ9@{1LJ^WfGNNnU>>jtSOKg7d_V|@1K$G90L}w00j>gW0B!?* z1pF9y0{8{+Tj2XRhpqr#Mfgv^euV!F{wwfLKtj#}a)Cmi1Skh?2mXV2`YW_)z)iqy zz-+(;ECiMVtAS5p7XYsZx`2~`&A?V*C$I;tX;mX@UHV(KyMY&hmjQZFoc@k)0{kWe3xP0jBXA0EJ#Yu`67UvK zPS0O}iNG;HE#L;|P14=K_krI4e*pdnd<^^>D1{qcpJ+47EO{LExpI{-XId$oWkI+| z+hB+k7*=3mH=9evH(tSZ_Q#^m&S2PCT}{6X<{&K1rE2vkJ^weR-R+x|0d!8*>qG5;vwVa zvfm%)MPQb?x&qzoM9abmBvxQ(*$y(7Oj%;;Iu!^*!pdbAf=G=h8BNOy96xBqfE@T% zitN$!a6DFbktN{4OIrvPSyAD+73@tjN4sh5{!V=eHWSNJ1|94x#pzic{@*R zA${#;7Bca>YN^I%VM_cy*kHX`ykl~usyIx)cx3#Yerlu{r@PBMlzkSy{63U^lra9D ze{ee4VyM4^H;Wu${Qdl3dy6ps4u7ydR~Ub+?nFkotne_Y?-(TZQrc zgTZ>trb}I^Dh`|ROIyb8s-;Gn@p|)yA?=G2-%}WDKPK@Vg~9qG#87|7Zx&;P@jFt3 z?eWHk%ay9)uvwIdSwrfRzY~_~WKMkDAytdPoL(g#VlyXx)o*a5S>QF5AvUw1S6dF> z%={~5L+MKoS3+YJj$!l@htW?OMnCy5J&rieijNMZN6>}MB$EB7R2xuDC4P6!xOpQx z+NJco_t?JZu=C;ztv9|)!XkF`oe(Jw z@Bj3z%0l#i`W=Wtn@Nb$AB|T2H?W zLYvV(>xW5)76D4xa`5gPZNDMy{K9(l@JleXn3VEj1D>+R;{Etx5kDpuc&>{F*#WGp z^?I>v9mf0&&ut>cI!_ngjEH%C{ablyF@)v%uIiehE%2B=9K^%osBaq{{>P)+u!4>C zW^Y%2Z!gyU@Tfc?@zT*CQ#=)4*|@aD+p?^gUt+*-UV2+RTIp$CDZI_cFKb-d>PAAe z?v!xmh3upPuRhQtf87|%7cT5*!LKqlHnp|j)rf$4f{!QhJZOS0+iOLy81B zo}1Q7>wW2!|0X}JIXFvE9oyE6*D}C(lEd6%gfN2*MEgWF)=C4_xG$>i><{91RD)ew z)!5WJmEJnwxE>##s#JGv3nM+nc&^Sd`hz`#1TW%nWPRkILw#6VujZA^YW&6~!d&I* zXoUMpb)ZN0+nz4?8j|u*eNcHAVI=IsT?2B((=yssa|S9g92ZfICHh{R9w;n5Bt?tk z8LSTbIy<9*Erx_2jtv-Lw2cw$_4x<+;L*Gh1uOk32l7$LqZiYQDhW9n-Z)66Owd=N zgGZVFzC<%A46(QttL%cf2sC2>Tft`HRc#X}+;46uRW9_ARzx!!<|>TmcP_ro9R39?~FzO)(s2LBnlRDVq1$xMBy9yE)EjYcVZr#&ut;6`gzf`5RHm$>^`yV}wzk8+fUzg^PCW=X$(6fK3%3)+|zYrdyn>a8IGFMZI=(@|4;3|Au+J31k(LG zhw<+?S=mqin*5`~_z!4*8uL@P^!#^e|Md31K>N=yI<`*4@K5E$*qM^i)4fV)*C&2C vL^>CZ^R7hO;yG2~+|eqgl71!8gW%N7$k))}?`?0Rl)bI*Pyv1a2){&2K zp-6~0#l&l+EbGAi6Zs}rAX4mV_31>$q#H_z9AKVEH;-ZiF~=OX8cv2~ocle%Qh1~i zFT%VC+l#!w^@)^tQnzV4%l^&=4b(_CNWie#FG{kdG=9m>P(G@YM$)L0_bClPr0^a@ zp6VZ$UrR{X_i%m9;sO#6mfT(F$>%0E_xI#8-T7Rha=82Oz~=7F{jqW})~EV?JvM;m z)Q(;IAv?FlNSs*tcJ7Nmdi%|*{U>*R>D=AaZfXPhBO6L&FV)F>6in(>hOQmqvbo@E zX4}wWO#>^!8sTxo^#=BUaY$3QH^WRRSFk6+Gzl`xcB*8X)2Unmc8rY<4w-$izSvz@ zIyGG^aH&ZSgR0K~>;?5h#-(y&ZUvQX;5rw!87fC(EHNVBiVLS$Ns1bV$}Yz}`Sp_@ z0Y3tM1pEm25%446N5GGO9|1oC|9cVmu>F>glgHl;CBNDFP7grxnRz={{blm_+0Yr) z*y>$xAzbaci2L?V19PNjsqCE#)oPXay?-5@edE#O>|4p>7Z=9&jh>sIUu{70-05*8 z&c#tw*M1dwe?Lj~XC`Cqolh(GCr`z3;gGza_IAf9!l(%=UL~M^Qjm0*MzuKZ3&^v$m!>iS5@BATGU)no|0mwdaVC>oZU$_Gx@zCh(uM+!5 zXFp2pOU(XjfAZPx=MdgIw&@d!`Q@k3NAmP1n%&v^+xE_5)cdj7zm3hlH$3~NMD_aL zCy$>AB=7lM<u{coS~t->+6_ z5e~!4BZSfW&Wnhtcl4O2_mH@phGU57C?Oo#9*#cH-u8viG1zwFme1X};WmP)9%@S# z+q9a1L^!fL98z3*#4v-nMfmn`83}LvR_ky${>{0R6F@FUk0*0Y3tM1pEm2 z5%_*txbPRh3$Dz~0>`7ZfJ(Yc(~ew3uV#Ze)o z87lYD)oPJ4an@zc^%Cpy&G9(vD-{c18%z4mmQvIau$HBW+Bd8Cewk8G?HBE3-AdoF zQo6wrkZdtjPVgw}(hpj{Qo@gDRg(Jg4X^6Y6>cxSY*u=J?QmJC^aUQ5Wd-aX`Cn^QIqWAX3dSmhK-ilItzuXs(#rrog4C#CdpCvqLmCCtdLBA&! zkM(x<_UUjZ`fP=Oid+CzaSp*C&1t);aE0;>aET^+4jSLuex4ePsB zuV1sQjH45b0cDNo(REtay=`0CMmx6Qq|`Qm*0r^*jpoAv+*;A^-6#Wrz(2#+k)RR4 z4Ktl;Ftk8tu)Xz`z$V1uU&3j+B1qpcQ0i!HS$W&fg4m=$ zvp#0&kxDw2hMsJ3+Um)dXL@Ez#mB9*UGA|{a!5R$HyG>pq!&{$%Iqfz^xz+I@}m-Lq#+PBn>>w5dv z+VNeFF9SKQ>+$6v$A3K@f=0)UhDV_sZ}s*oL5|ycysdV8*W)-84UPj1t^>Ux9Au!8)MtbG%6dxf;}$XdqV&FD_RLFMe}9z?ufPG{HNY z;Cd6B4zZ<4gWHyXbn0k<531e*I*5Z1hGU+25@!4*4^B0by{*A(y9vAN_KTGFl5Ie92<3L}cQIZqrF2r@bJMhliHHb$L_s-i@R=Q$dXA$C;q+8mH+KRt~&^>>{6Yq8H$C?hz3 z20VVABl}<&W_TV-eD<&(gYh2r^CIHp#~YthY%dop^$Z?4uOLqC_u8Kz`(T6fYPw{X z?FxSFmxhd0vZiun+bWs%w3*Hq3sxC_WXcrHseExFl{YhXu~arwmBWxOPS4~m+see^ zjV;W{Tp?$sN~P2h(<<1dBQRM?O zI?D{0!-sYyc8(6!m#9Co5W?Th%#kE}NDl7-bH~{3!Ni!kd;9jiBm2yKiNUcE@~Zyh zN|!6D&0t!Yl%3+gybPoMr!LPgU*2M3I{$p3+qxgXFpTA*nN1Zkc?-%rrG;^X{X7}p0#WeTr9OB?WtbAnJPEDY+OODJ+ z4sUO)(hS53Mcax^6)LfbN)G?%%Vii!432i&sVPup*;F|TvCNSI`g5dRa!UA?vQ9Cv z4BMI_0_SG(HpEm%VzzY{^E4H(tf=A|v$8z+*$i?;a~RGna2S$D$EoRD8fz`0FWkjc z1&%We2*hwQPU9TI##$4VDV!veMaicoCQ8o^%|nBxnr%;Mx^ z*|M=72O=jp2qiv1|3g7nU_3PO+TkR*|C9f7y;owgb*I}=p|z3l&jtL_UFhTC0jK_s>_Dud7;}F><$`VK|Bz8WZ8meRh-wO4i3xzqCjC|1|Rl z*`chrlgt-8;^WnRN&HSAM(q;+z}GLjR8sQZVX|AN5cjjVx%oQtb>{0eODDsyxQFLF ze7SxaZ1{|4z=SVuzwhD8df_}@Q02Lc*n8XmL*`5T<^BM4havHEG-s?NPjU`7YNGIE z{Snm>#B`q{YI|?}KgAL^U)CuHb%%1n5w*RHzX0=?p?hPVZj0-gm}B9!7hUA*Xx8rH z%ep7@Dfz!fF3laOU)D$RAN~a%KY9Km^~yN@0l8!%d|5{=@C}sMp@~Yu7x_m--Fz?% z$1v^)-4V6D@I=0kC2qdlXX?yvR=+s>2s7kM+AsHQapp@sVo!Cs)5oX~#^$vm;Sbdi zCnJ238fGN#HZ8M5S_iq4*S5V0|HsU~*Gr$4mp{RLZ~tFqexDFM^@|^pa_(`P yUSa-8KCy4W!hYOjKFWEGp1aE2b@RVI;Ap>)in!3Dswa<)_z&{LDR~GU75)uG;9lwg literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.9.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.9.elf.cpp.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..281741531fc361db318949ab7cee6639f50fdbcf GIT binary patch literal 33592 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 R`otyG-{47ecrHV&{}<)-l)3-_ literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.10.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.10.elf.c.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..b4fd53a5f0a14fca90425adc3891f7a082f38b06 GIT binary patch literal 20304 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 literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.11.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.11.elf.c.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..6893c0115c02b04bbc31e413e5ce66174bdf80b8 GIT binary patch literal 20304 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 Fe*n7kIWGVJ literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.c.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..e2524e35a03b825f6c6c8b47d1695be7653b0679 GIT binary patch literal 20304 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 VD+Otq&!_*XIzyt%q2OTIe*#jlSxEo@ literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.cpp.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..0a14fbe79f3d381187f2f16a3badaa89d9e834e7 GIT binary patch literal 36200 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 bKTU27haRskqG2YM{c{&cja^X&QLOkcgJU8G literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.13.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.13.elf.c.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..03ca0335ee2128027378324a5438486e7c8fb8ee GIT binary patch literal 20304 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 literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.14.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.14.elf.c.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..657b161ed2ee448ba10197842d08c2a34695212c GIT binary patch literal 20496 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

Qu0-6Em0a^h*KnQR#U>jg3;08cD+Wl(4 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�~`g&34igyFL)IrOh-nFE5k=ENiK+C#^zhDfv=x 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

+OJ^IPdvl~y@v3|N4 zc>(U`@En3i`>8#ToX#UhQKY7yLbq#K7VEEzB+*oPR-B+3CnVqFVBtbz@G@j|l*1t} zDoLETuGZ;5zAV(DO&In(L`5-ZJaBTNzWJ39#P_mR9(Ky-Nmf>?LU=gSF^7T^n2tHT z4>d5kcO5-C-2yz4=HT)R$`*<$*y*&KE9%Gw6InKA(l`~73`n`iq-q8xIkKKz9v)kN zb-fX((l{hmR}>I@PLq+A!F)+)NAtjk18BX*%090=QG(PYqaf81l?LiVa9Np)p4FkL zsKd$+{!0@lf2cO`t{Z^mPqwhtc&9AjMVj~}Ma49cEu4`3KqLdw!^kAk#9q|Iu>FMD zTd8&ad?p_~WF+*@!1_|MTv|E=%D+bWz<3om$0GtMT9@iGhqxOh|HL?2aAyvY#H@oP zIo~KEzJ)=bs1Ng*(gFaaf1)|SZC~Tc^`rHlWyV2K;DBiFYv)gB{jFljIrP5MH`XqG zFnJ`Vm7Lr0RxgSF+>JGXSh5MRsJz2hoQkE&2&doF5eu>rn53XK)Dq*FPe*g7@#|eV zq)~vW!lxf1S!yLQr%@92OO~Mf1Tu8Z%awn2r2i!O2W36P_vgH$1$UO@TVZqxXC+@z znnbf&HpvioCrsMRDVXuFK*~5R$J}pn zv8vgmux>{ODHUV!^@pL!r6r zbdPiTrWqyq2?*3l*dH;T0 zHrhF{o_&wiVL8>|T~-H&98kVO1*0_e)?GFSysZhv<_}+?EM99VxWvoyp+?j}{QdsA@}seLO^+2g=G7 z`^TgnI{kk(k_7YKpW;$n+b z&-XI`#4FVMJis`o!j( zy2M9Y(y78fS@1;%nz2ks$`&_6z$H(kMsgkFw`d#ZU(#Pl9%sPvK_Zzg0a0*w6hsoJ zPT6vt71_kshpC%m&)_f3d#Vjr1{1>hw+=EV``M(p+gj&&3Ket|HCw$qIFp;+YVpqq)Egb#}_fBj|3dvf6B;*O*U-PJ$M5x%~YBkE(l+0q?#i8C|Rr zkNlA$r$-{^vPi?E%rIws3wn~QJju4<8$!LoHyM%G8a4JJcC?9adURuaa|&RPemdnH z<(u}%J2GE!d4o+j&Onm?hEX%A%-g`s?v6_CkHkN<*b`tgLusRXGGm{^PD~t+&)cSBWqN-OWU}Q<$IN9>NEmDmp*d2sZKFj<2WF`G`ZM+o96n7vPXm-ye03 z@(XQ>jfAwom?M$zAGG!XsxxdqrLB+_>wlo~p^-vw^B03ruDEAPO-CdFwZ7u)+r(uB zdN3+0lwqvSQ9+^Sb?!leVkE0Gb?!(e?jNY}t~4bjxv$GEX>}!|laHd4&;JwkuNsc8 zU1^-^jQ9(o#~{o`^;yzJuJ0OYqW+!mkRY4JxB)aDoA(8Kfw?37!xnu(;&(1@^048w z^IP(e!2aRAH5GX*f%1M76rCMOztT*WjDCE*^#ydeE5e6%%wuBqPVbets&S~Jn0;=` zMu>jpcgRgDIG~QzmImrRCRN4k1FY}Zii+hIoQSm1BKiE4i`fPChFO#icAw-r8cgr9 zY@*A8jRK9gc!%6aT@~>9kw1uvpBIB)_`kxRBFUdA39K`jk5MMDh6!ZOE

?@SSe!Z?m#ZCVJADqP)Q7-leUq+NvjlCZtV~?G@)0!~XLWg{z zy82tacbCA1SGL>$_Xp*h!>m2=~$FDj5;eBullcHyFUR1ok;tC}FoFP0DHcw%Fjb zG#7P&;h0p8lQ)uCz|Ad6*c(umrw{|tzVni(o*`qBT*z}q_D;%vryE%uAyM!*p2g8n zfOf)e0DbzQJJ8*KLf=)<5}9}RSac1X=1`fPODWamw^*vN)V0SVsd`Z=zx4=@%%sTg zB9WI(+TP{*G}5fiVPo#8f+y)GvtsB$_4GaGRrWin?`UVa~`s%BCkVY zSWe5(_tf*u7w;38XF&0>PQNt;(PZ+QP9-IB`Nk|Kl8-jfiSld$P>MU!tP4N2!^%?( z-F*PLe+QZ%_W{VABuW1&DxNG7>%R_9_+#*fzDQ*?RyIPy($a9casqsT{#X_rP=;f} z!c*;1jOi_u*N3c~0h&;Epav-N4~RlHB!HBf367Z0Kx#ds0>HLz;te- zy|$gIN^;TQn~~`B4-cY(gxvW-SOLOz838!Tz<#m)9U0GSPF0}Ou!V>5?2s=Lov?+c z{0o|dI)boi!Tm+S)NJQPS$!U(oA%4pt(n`THCT8P)rz}D65SU`M24}L&6&kBv4E%5 z7<0J6ikPy(W<)KTj0Z8+bmFI3Y{gbrVk#rX!iUw4SjwiX=*{?P3?EKlBwKX&!hVIV zhWUC|7hK`{@s!}xDgoG{fq^D) z+1s2@+!CZyb)uZ1^uRBc_UvkpZ5OTzWBCK`wH(4fnL*osJQwc zoO;|xHVSLwG334sbrETOulPVbil_}8$B0YBj%P)*gS7TP?5ie1Zc8$4F_rEUO9mvM zt1gI7--ai1_uDTO)WYPK;P7s5#X7@Yo~_I5FP1K7hiPJvy1&Hsbs&?A63Yb13j>c} z_tpsxR6Cq}6p}mqj|$o4*@DBL9S4^LPxB!0`Dz$6mF)7VorG+8uiaB!Zw}Z!E$xdR zpjl~enBHR5F2CO6*W0~;dU10u%Ge>uyFJ_LJr_F^9<8D&)YCH9?SOaE0QY!DK@Z7$ zF|9aFlJ`2|CmH>BVVk)}sDG3K$U2PV`XtoV;hO|A^PPzf`R+ty9p^KbPt%!OJr^Ih ziO<8xcouK2>pf!^x_fw53kw0<5$YVx4f^A0q!6F4LDf6h#b;}5i6NV~`BSHV;AF8X zb22s6HKX*x@_X!why0UY_qL>p>%J$l`>j^uwt}Q*B%!7CTSq}>TM694pGTaxB~4uS zHtU<+j`+Kceg|5CEy%9H0eY=8QRQ8cSUTK*L3v0l?TsfZvICJ)TssP3au;C~&)yj( z4}3`K9q|*wX?eAlU$OAn*&=$ztYW~35!d#l48 z^Bc?>F}&pK5?lqCw-p0sEi%cb?xEb+2C381AbLN$jDrfg{=pr1hP(fFyaaI_pN3+( ze?ag>8^J0MCoY z;?H0q!5((?#TziO7QqtmA!RD>mi%Oh_7AIotQc}mqQ!%whF61_a_NZ2Ad9)?ph{E1-nR#Vr`0MIIqHKIa<_D-0b>y;-(Cn z=Sqi_ahvY3>3%4?PEEZH6aX5znIW&$_1XT+1W3?0tpsgGt%D!Jqnr;;m9|7d5Ki>^ z5L2!Tu4D-y#{73M;`_Q{jbry*%z)6UwU_5Y-}kgkC$YAvgQvyqirZwgmHjMk{v=D> z9I%(2BVv=fGwoqrXm%_wr-yDLwg*u)3>iv7|3^xb3I?df*-5lxX2lQ}o%^Ng(_^WC z4?C#+Nku%Yo2J|ZQHBZ1m?bpxF;}OKxsw0D9XvAMk`ZV<0Fhy{?k~s)GZIYR4d@-p zgl3&A*vHmvrwNVpfyn6;>(IZ_`no^9Ud6HiQg`B?@xGP-zu|ya0KlZ5gnX+Y=TudH zDvbL`{UnbZLXkTokt29ya657tO<7IgS!Ge)0|+pj15$yf(0V{I0YLIclC1|P3ba{U zg6!JN{#ht<&8Y(bJLHQ{NJoh2Q0~Qar)id$KGn2DO#h?FgIF=0Z^nq}Z<#i*@O!lO z1pHs70G>_^D#;0L&PKy)Bykw*r7kRb!1<}9<{2e_iKzieDUc{JcbNqoj{Or7_>*sb6+;N7PWXecm96y_4)08G@&+O{I*h0&Eoi(%?bQ)|^)qHVy_{A4 zFB5rKLGg0k=xH&ErAH7V6XA^*xIyHuywVq6Z(y}RyBh5gC6<1JG|+}Hhiqf11L6yT ztkh<^r%5oM&Mw*Ix*o~gJsiI7rjL;T`oj65#M-z)4zJ!MWR<^#6%{f_3y7Or%)87N zFdtn(UgV`t8(AzEd4vi3aBao^zuv`j0g&gG{SV6AeN8~Lp4>l0Y zavD@Pg7+N+sONy8l;S-CY~=t0 z0bV1(+W=^*6T?riX*=Y9OY(l&1oPRABnneSqd-E}Xalp9tU;W(1Y@PKP1XtfH6)13>7;OKT zVk_w@U6BeJfpY{naI!h5EJ13yMhLCB#87UQ3NAT?CVTofS@IdCE;u1JMq_y|9I#Rb z;!_uOs1BC9sSc9qVj8~eVi(94|L_NpYqt6HR-KJlQ_*8&tC`3(g3wC z!!-m=vX|#%K->T|Ih`88@DP7QIS9qVF7L3mjzy8r3`D`X1*h-uXWnXOnO9QEtZ-wx zvc`~lm!WI`qP!zZI1N`xhTBNhEx>V9>9a0SImnTh^7B(#4_ z@1ezvoFFE23f6w4W36A+k<-#C{}8(47l<(Z<#0Y>I$UO^YMfR?-fYi;WqJae{i=)m)yW|DV?)GVyrVUUEI)DiOQIHJ7Wg(SoeE;v5H>T^b!iES$= zHQ2V$>L7<-0xNbyo=P7h_%UWZE;loW%?{qWdT(n7^6drWl}tl1Ab*cSwtDM!Wwzsc z0^^%iIMXM5@W!cy78~lx) zz1wzC{L8WPdrbX}SJgiZXPn z>ZR&noZZ_H=h&;Tt!=PhZSbGq2W*>KbN&dv@F#zaM^!dhm0O4V!VXtKTV<)3xossE z#1dM_Ftu7Sw8tBEv5Y#`WLRtrKiLJc%91JmBwiK68RD?vd+<)X+DVenx`p7KXcGhj z9Mh}eLjXi0)HSh-;U&D+8s5e?W6-}QQuZqnb?*Bq_um1o=Kd63mA{=PwzNJ($z93d zs5gN=tMFQDcpBfxb$d$GUkLkE zmneT1qSX8s;8iK1{JqvJ!eAtth&Po)8F&SWY7Jv37AJEfyEB-d!8kG;i^BRmP6A7C zhaGLb1otdgd&##XF({#qNZ>*1WAzzYQ82ySfujvPBh~f`_d0YmAu#^o=3fsC%A6Uv zXa4PE{^hRu-8ISXjU;2<<1rTCN2RMQz|ikd6fLCaNs=2K0t+fF9rCCe%Xl?h&>vxj zT>*0*ot`=mD2#%%pO7K>|7h|cOzUSDb0yCzyqA0kNUnT^Huw$XcAnw96$WGpW@SoC zpLych0Ibm5&J6f^4%XF{m|#%HxKa;c`u}CZP=kL%js~X^5Xx*LrNjs9ioG1{W+~0Y zdEljGI`+0;y2J@vksdYVrgGy z#~^Dd@-!-i-=H_vY^Oeq75C|A28P2ccxa?Ud`Ctf=D$+;%(0PA(|@Vyp+s6rkrP$5 z(vEF%Jhq4>BOgJA7%Y+}_O)u!COxU;vq-rFKBoe(^S z3@haGo^7vqF4Fv1{da;74ju$NqAyeYR>X_zwgK#|-i0*cy3ITZtuN^siE05wg;Hp~ zb5wti`E8p+z;5}c;%11{Y60bcA%EtnsrOu>@@a+^mwpk-qV#ej(*{!5>?|$~ga${Y z55?O&wOe6VV)HlVXUuQ0@no|f;_8*zab+@-x8mk(W^~8jbzn4WUwkxVlP|{5t9|jF(7mXq_1OD5L zwR}*v;ooIZ#C7k$Ow2{YJ=nIww3DWh3*q*J{UI=k@q^oJ`!DK7`6rMc{tf*{k$*$j z9dATE@{4iD6HA{%LNHVOM1N8%X-ni&iOG2QAN-{6)7;(V0Bsj@zrzWTFYr(FcgM1% zRY@2FT-CSoO{7wN4^d^U%fsKWLWCUah72_xh@&C@G2+X4q)3rhz#qAArby*c(-EbZ zu<}xdKzgE2q7=sYN6f#H{~p*4A@blkfo4QTF3H~ep<-b>tFu%G`2=ioCK#W1wLb~6 zar$nNe5+HO@dYqCd@p)mBZ`pJs!755bsXEOBAcVqA(Oy$P~3CHtjk20GMF#0KS*kf zU&4~Pqa;>A!)X~LmeS7?P?EVU2`t%^CJ$-4scBNh(pEIL946F3uJ)dmLa~&7y1-F4 zA&u&b#BoUMStb;^Zy+Gj>OQ2e@~)nXgWO$1z084NDFEhO41zo^7K^1P00AzXFMu0Y z>_&BV#leK07D==W+YdYu`~#6Fei=)o4<}keIbkd43!VsT6eQ9Yu|#AKhV4&k$J;6y z&{#BNCnZH=m%-`GA%jKQ5(H_;N9;yX(0s8c+M)t;A8g?O=Q zq|zNeV$ipGM)MFcQz$=UHH+>J!U4`{xl%ODGbR<5dpFKS(9TaI^eb5QWt`e-F3Oku z69mM&PI21=4(Gx9taE56IqlL>J?I&5d25l5{OC|VE>)K7VE2cxNgDApXjAOUN+Fn0KB|HFF2oK zeVJZ{p$6o=To+=e4*_BWHiQvleUw6IrY>|HLJv`hhdiv#i~vAfx$nXIWt{t@_j~b9XF%zF z2Hrnc-ygtxKz+~0`&;V!Y!G7pR9yT~`8Ad7F7Qf-L$nCjOUhQ15bX-SzLTvEU_{y%_J5(xMqQ&=ZMY4w z-sX;lNn44`3g!--*fE!!`RFP(cqL=L@EHthsaWP6AtnDPcf6%KSo5C2_zGb1U94Jko4+%Crv&6Z%_l2Hv7=sz5_DO~iQ*k99r$Mw9!l zY{;=(hkOoOH?@Wmz~Fr{{AW?n$w@G(S+6`zwak^FRqRzxz*}7rzJf@_yK8peZ0r$!`S^lCv-~j;_g?N@_V#W6 zR#&t18eYv(GG8Pa)3<0f3ot)y{)&ZGvj|50nWC#%nEYYWxnV_T3>yFNX&@w9BNL~v zV@l7W510<8V7;I&6xhP<_y0iz)81y*VE&!@bJb$Qg^R?*lN( zsEU-TR?z`{!t}4`t*)_^DVP*$#}5P{#^bJsfV)rVb}rAc+bxgJKsLWYHfpR3+t({b zN;pd_PaH`;lLv6--$q%6aJZ;d>4A=+XSK%uZLQKm zwl?&o-FRNVb1*OcFX|U-zlrWI<R$7n@vQ_W<*R6*|pWpLIqiUvx%N|R$rEo=(&p1GdE1nY#Wsm!cns$ zN-gr0OW2Ua^-(#!LXyZ%b&8V z+(>+E%|ID+Pl8gAM@8(A>Znu{v;gTkqFc$T8$}5Z^xcVbfeq=Jy7V&#y?kk6sabu;T&=rHgH*4`b;vfT#uv-5GbdvoVda@rwUqc{>2S($N0kXc z3eRKV?YL;v)h*X@$|;|Ah~rM7_Z(u@=@5GMINn{;Yr)IVNn~6{LHjF*l|5MT)BRn@ zVmxEHS`SPouB46FLOkw@+c=;sn{F?4r8$K&_6v2mJ_7}!@i#-M$hG_=mfV1sP*-Z0 z-h_i1uan&)-u?k|&ro%3l{wLd=c`NTE`U0F;(tPi!~TSR!@aj^^aVEG!NWESKxPG{ zVMZSGY<{9ZIaQRVsObV)2iN^0$~vgOv@O$vPlRY0os<3zczt}Wegw>Qsz}0kWchon z-(kJ2bI*dPKZG}KZruw9eU!X=fTrYJZOO)~OYU^dl6$r(IWmE&{@--{EOVy6;<4Vx zY6A7mdS|32IjkmDTeK#vN)2Et4O*48C^kw1*g@gH3>I)&F1dQ5Kgp26Y2e4KKE5^! ziUA5}w7~E^gIL9XzX?w52PARa0b&e{_2Hi(l5xdX$^ook?6vwnx=@^|F@$e(L;Z0c zPZ{wp1`bB$1DK_duXP>GmWr7Sr0if5bZu`9`AH8(j8-7pkdFGWothM>Fsj@qkx2r} zgiC{&!Q*7pW(;)oePyIF_jfSW*p<(Ac7qBVp@H>MVK-@D$tnyJ z9O0@(5e+L9AE9IXmzyfRrcv}TPE#iQGsDPefz*{N+OY|c% zS{owwLA@ia?X(_o<^Ti%yo`gNU?CkPVFiX7gpQ5Wz|l^>;RedaYfZ+3FTt*7Z)t$_ zWp9`xthcbY44`_gxH=9gheEHzpPfd#>;LaQ6{eXauozJInMEj(KAy#VumulWzf{%z2L)yCA+V-VDYaJ<<&` zo#6t#`$oc#A4iK^ot>7CjHzhuD&_s%P{1p&-|qBpN-|RE6O*V52g0ZgyuoN$xsCS2 zuLliQqbW=zFlNn_Ta?;E5OWwM$q%)OYF6Gv6d65Wgd@(rybF8a;}daq$#tt!X2o;y zgZ54;rGk?`#6vY95T0_79Qge=bVJr)24#yGCqSqNRQfSlmW}#T_AkXm5~o7YrBUNH zVV^v@UVyRjHDsZ#8Gtwkh?4as5z^a>l?SKiET zhr|W9L0OH))QwMsj7J5Bf9NGWp-HhIE0As|K>tudH**l!t_CaRH8}G?978JIJ=;KFsC&8cFcTe=p!(4f9p!CY zyvvTkokdo57&W<-)O-P#C~^Bd_P?a`^GlaW@oqXrM^~t%lKtAK>;o=s+%XpT4PR5tY)PAkmw<1SKHqg-0|7+@of1Ncw<9mJJ*d)pUH%_)ve+C zEOeQ7C_`-@QqtkQX(%jPciQeb9%mOf?@%#bP%)aYxXp}n_ueSLtU|{~$%^jFP;NxK z3A-n-Njk+?&?BU3!5kcFxOzX8?Ie?1aoq%rXr|fFv4#n(XTN)U6 z`&VO7_>*lOjBnb9#BNuv+@SO%Zw9(PpT&-&SZx1eAbd*;)fRXoMD+ET@rYf&E6RY^ zSu=WIEPw+v1qK7C6|(J${FFZ<6*aJ=7y5{)I892$KziM-8Xc}aK4tqDIE*-a|NNTA zr>>7Ay6X5;Mmox8dy(L;T)0ce&8uM6QrZ{agu>ZX`!&w=ki)OP5m#y;S@A=3KM{7* z=qAEvOeAR0I}XbMaV?2m;`~~D3h75eIA-Z`LXiYgJjir?FJTGCBGLD$NI=dsDVP4r zEa<&(2%r3@+17jMJoLKxP{@cs3^1fBrK&?Yql{tXNL1cKuk%x`8VZy0_D&&E`jhWR z-&K9UhR#7H2hI^;{T%)ce(T_$DZAR>%Pp}2)&^UswHG3l&)=f_4aqkMy6LoT3hM*4 z2}1b7!P*=nN;0IbqP%iaB#0dt&4?&+PAVd1@rbl}bvYRTGN~j8q$1=DtIf$2>T+yI ztgFq*62vq^%@Yt;U2-Hf9nWSuaAyfZZO((}xSaXyx5yPK5NVrf zorjR>)>Ys^pW1cn=~1`tkN7U@hLK&jZUbIX1Ha)(OgWOg?sb-6BffR08WOz664b3@ zwZ%JB({Su-CeE^-<90?6r2?7xb)M_az>n01<~Mgn|zcz;8Io zXtb^YA>^&#LCH_j6I9Q_!OBLw27B~F{MGXx{2!aj6L40k2Uv$q4qf7D2wh<&Z)ZC8 zQueX~8c~^+OBV!&;*iQeNyzN)#wjOg2uoa(z0D7brSniZ#X|ZE4b88StQ>|dvE;9K zBRc@r3uPkhzOZa60A+d|GjbgddJwjkB?K|E>Xhf+KrRq&cBV{e=C`Bpq?8uycnBBc zlLKG%S^B|{enPW9Q|Ir!RX&@3#OA5P<%)Amt+uk2-G_L0U@Ho@a>6Cn`*YXgDhC|2 zakqRxe8!0Ka{c!R_Oh`K?`8OV)}r8C%Sq8ouD{GSnCnj(>$L22;9660+(AdvA&2); zs`%ta!~=}-v94}$Sl|i&lS9l2@}I+?@jtLPcFOxYEGLVuhXuhYp!_=F4*x(Cz-G)F z;*$$04|yPD!#9%mIIa~$CXL9X8itkzXvI=>2>W!nYTMg7t7w3E--ViZvGm{6o85p3 zRjEG_vRuGXJ@QT|z?>R{B^GnUUgUy)!(}2Rrau8;l7C<-9mntq)X7z*y*2USg3xjWDaIDz@@5|t32CrxE z1_rk?_?-;i$ly8#pUvQpN#2tll%{w87VU94C1I~qxQJSHLHq4u&bg+;-V?LDwGFnw z83TM91RSQj;5`v9Ri7}xCIUHP%(66!#v}{sFsf1Pk~9j0O_eNH+{YclNvGu-r*ELi zZOE0s3=N~3!n_R)P65ph2mlfOW~V+wWkR@6Us;VqREV>jEj-S~2X11HgMu0%YtqkT z**II2LAojCqmi)_;A4-|Fiidi56xCy&+mzMty6hqJw;0B2X5KFctR^P`T7Q%+5X{w z9}Po83eu5M{k#oNzxC%IC^%A*rzh6hNL&tog=N}l13k#&X`Ax<>yUpK?|#CIAmDoW z;eX@^e~Tcn^+&J(SfEFA{>@`1d$M?>QbmkvMLM#I^nZ#~B$XvfKh5rNmNahIr zA_$+4(Y7IOC2K<$Jk&OPhYkb1Zi*nh7K1Q^BMgrsY~l!}2tpwcK**cU;HCf-pJ;VJ1hI6GfQF z5k^H2I>aDMzY5_xjxaica4=I#rGp&dRJ4R(57y|+2*T?z2%Vo`ZAivLZ9^qTutgAx z8A6y!!#Dz|87jg$j*t~Wm=IIKGLG;>6ya`;AVm<83Bf<;FxHv)kt3Bu=5oA;qj-Hd zo-=~?&1fycC5{lcI#RRK$*k>p5rns55S~R!@bvm9!oN7e)Cj_g7=&~WL&(5GZM%;n zOphSk5rYum2s@()_i=>#BM7}>5bj;WN|=R*T0%NUm=!@#Mp0Z?UNv$A;mHU>b9dJ0 z*%5>fVi4>|iALWMMX2Kl4@MBy#vt6q5$=y7{FWokk04AV1plDh&rl`8{iotR6vdm# z@s>pJZU7$YviUR~a-!PrZ}Rfqh~nMM@s>sKj$5=O_!~!fFN*LJ)Mtph*^EJVywmN}cvZa3(XHaP!wMVQqUqij&U@d9zH12{b(4T_1yU zg;%USw0*VrZ{;`@TAc4kYRT-TrGdYbCyLY5l^}1f*WzqqIANyQRKjpR#6vBohU5HE zi?bRy$T{N_9?{<6s5_&mWgK;b7BwrTxCPAe*y(XR)Z(Uc98wn}q%g+d{FURp9>q!J zIInAQz8--r{e#@t;)*if4;-~6ih8^YqsT@r>YoTTGK{)o%N=b^#Y3&)I~?a7EzYAc zIMX=J>?qDEj`OY-#}b1xo#Q+h#c^<)ObD9#TZ87UgHIR9ig zVezwy;}EJ^&Q^}2XmM7=l=BG3SrNtYah#wQCnpByS&s8!6z3koSyOXTi_N@f;_G|5@*kIsU8(912on4z?dk z+mnyL5RaqVUUut0{UmH8F?O<|;NT{pk-dTLxB5ZyEhbw)zuDA${9bH#wu9&b2sfE9 z(03dJKZxOHRnT4zngq~M6;#DR69L+*g5KnykpOK|L3Cdj8rvTx85clw?;$nhH~+#u zQUdwF*xnb^COlAsun;;E*`HwdiOU(>#V8AQx9IOD$S1aRVD!ZP2wvdwlqkdJQ*SCy z!39b5D>f6Tv;fTbN`I7v8-T*UhdC471APr2_WL~QwW`Cr&f<;#9^HexmS94C4N1_F zAW38pY7Zg^{1gZ8SHT}JuxmL|?o>g428gVf)Nmr=yDI!Co|K6AnhILZL8Ac*sGxZq zL`3|j3Yx+}M8v-W6egncBM`AYT}&gVF*3rsL_9Ddu}&9<;zK8++{*UzuSvfN?K%CV zHUuoBk{AKM!wzd30)m}vI^Xbq=>o1TbIs$HG{5y(Ms#Hp5WH4BB6Ux|Gr~F}4XyzG z;V)6F<~Pk8J~*J0!Oe^G%-mXFs7F%RR&jYl&B`NnhK~`XkLorQao%C}LRKo$_@ z7s{&Z$bJsX>kzB8{!DjbB>bn})W7&SrMMVa);26SaKo7LdQ*%EdEQkiWRg&LW z_dJvs_|$v@Z)Cf7b)xPGEBpN|wCFj+z&x&wcLyD0cBM2+zV0c!VQ&D1?#po$_-@NdR%~%2J#0&DRh4oqm z7YAKk9pY=B7JUn*UJA8X>4Hr%5{A1{sL!^meRdOEMwA}6M*EEY80LORFRU)nZ8u@( z7eBs42TtG|fnzf%xF>rIGsWLOM(|wfhjTcWZV^jq;f6y_bciRVeCn7u@^`Co-CCYC zMi{xxbrYiEiGL|t+}s^j=xTu{(U07Q^Dx-0pc})cf%PbF{MrWW`}n=!EBN6Hs&sc& zY20ea7;O>G?h;cXytn2>^d`JPBbac5V%_zzh6lg6MFy3#5R zzZ9^!CUex%UN~>#*N>n^iJN=lv<7YuporoiD7T~N7!~}7o>WS>;GeKpqbTWZ3jSMy zT5!0`CkC1inNPF!`f%=Q7^X=0ze7oebiz@P9bitJwE}bEhp1M5EfsXiMT5|p-HR+Z zP$V11P|$Dq9ZGY`nL9(>9hA+=6tG$X_Rm|5a81C;Kz@8Jdim2iw(d-R2Wz{kRP=|v z5;K8LSw;@t{^3s`Rw4U7-q+H*4(~Lc+3&St#$@Ac7;~n+jH@)vhrq86$oD&Z!{9m6 zs@S06q5)$`Y&Z(C;MC#Wffm%P{0c4bp{}e2R@Q=*6!aVR-^5$6QHbm#Kv+_iE7Pbk zxF-!#A`-`b82nb=iVz;!R=m3hBa`{xVYA3l6&`A#*D!bv;g`ro2Nxa(lY-$P7B-%c?nKYR{xiHmBA7_(34)-pJ3EZTkc3*O+&(-~f(~Pg} zXZ_`}lg_Z^;xF|+=&?zl>y9SE?S)P>y#Q+$1}d9yi#B0mhfkNGU+Pu#LIoMY;Fx5D zPbkQZ6Whw{ms?vm3GBXd?2=(-q2KFczqdIVKl{?M6YYcRH~s#Y-rE{V1ih+(|>1^_oAWjjJGA#70kTVWy>7owox?yK?|{JgnvT4x4He& zOdO|$n-Ke~&PG=~104dT?3M5vSztxFBU5zXK39fILm`4&yq$pNeU1-b{5|{ha$0s{ zdg_WlS*nA(6Z%FRzZ>TzFH{bpT+_rZ}(>%yuA)_Jm^)m zOKtB?RKFO$!QDGJ&|YLW5x2+I2=Y#}np#}-4*d|kyFHv)aO?R6SNoD(ID3FwwZ_Dd z;t6=vZNp~#wi=wTQadJB?HH~6fa+hm50`x5+DE3pjT5Vq5-jIjC_NxJEcJzFYMgX7 zzgg8kC^e4$jl&H{^|VutJ>&SIBpl?znS^N}7c?IHpsOQ&Z#X}(s;A{Vj!HoVyhjkL zCJWfs7qf9pZE~Dgl@n*dS%hr#O-{U6bx%B{%&tb?>K)!{y&FHB8gTV>G#!XmxI(NF zDF@_-j-oocPisyXK^~%hsjTo4bPQN;b5gsJNeTEhRN_o(52{FKCteC*yWg+ZVW(e{ z0pW`!9zNnt2QeRx z!*7%J7+0q6iQa>&LN)5=0ExsWQ;?@N9tpF02;<7&QNUi~=rxYL#?vc&5Vq-^mVNF| zgJi#O$om}LqYV!KxCY!^fm0jsg{T(n@=moAW}y>yQ75bj{sqbT8Its!@YjI0Q{8Ib zrSc!{gXs)shR#M@izUL7LByRmS)Ee}lmQn45rWJqW)RFqusnj<2$n~%Sp-``uvr9K zB6))z)>W@lSHWwm+8EPa^C}3d5&j9C38@kO3FwIGRMv6dIV}6c(oN9gh`rSMO_3~3 zqW8B%ZS=&`fjHI^sfFM~748Xftq}ptm2x258J|hsWAWh7rbC>cssGE8;24YE z$1rlA<-IW<`7(Z2<7s{s%A5&oqK(5#96{po0uB%8F(%#ngSQdV+Cfw$s+);ka9K$c zq*3$F`27N=k=E6)hdB9w)1TB0#KB#3xQy?~Zx~M@oj55#JqTHe(>LB~{Cr4nu-L(( zZjN-!kYF645kIL3H*O%{$I~3%hDL{fdLucfRV%pCH6YN1OsLkS4AI*JLeUW3C6rjf;z#?0|!9BDhID(l}odVAUe=rVkt3o@UQs#2xySCpMYIb!tA1spZ|~e1;bY? zd7J9o5j2K~q(KI+;@)uAs%cc)P$LPSpr_%U$=9P`_;|S5=;3#3%!-ExPM54W^25oB zXZ|^H_{KW~E#RPAAOK{&8}~;XAPuUY`O0Pk8sr+Qr_d#wqB2^=eK=+wk`dtQR z`Zi2Y@aLjYeFei8rk-u2Qwpn3gS(^iFUhC*QTd6>lE4Jb357N%9PQH~O0G%9)AY>wZk9y8h0vs1Bvc0X#nC-n5}FW7@b6Sz>NcY5Zjv7Y!)u2 zD;Mcj$DFM4cC?%^2eL<2yWmfA9yb9|d5G&RZtg&hv5(y4ZVdI-W?%z81_>2F_c7Lx zB#n)Se8yEMwfx5qcTsYv z>LnQB9Yn)=90YKmfj=3MyuWm9o~JH5r>jXbxf zc8xP1IagZ{;Z-d=6&`H0XV9?NNh`joDOt& zPc)!xIG&v`(0w_AxcQ>@dt{2sl+&Bc`=S)ZdItR417FS_Mz9_JoJJ#YY>!k1%mCXO zNoE@}7}Um~c?2b?ZOmiPSq!>_pd`1AOUUbtrdjs}s+~(hcN>XP*YY%LI^3o{Sv?w& zUs4ast`QR52<%iw%cG!)Sh@m(6F$7?C}snVVG#I};+&R7-}0FP*mUIy z{C^9s$PV{6oci=) z)+l{vcX#kQa)a|Ddfu|P@HkTgp3|rSR6gh5FD$!Vx6!W}HsjtpS0}LwRt0pa<-GeW zurNlth4a_cA9py$@-}M^#w5~5?(c!3$MqL+Gancj6d?_XqV^peMC5}a+kA-mpE7wS z@6e+vH4rV;!Z=T6A2@7cs05*rkYwpn0a#Dmvqstnrq{y8T>PL$`WJ4jEA|DyY6m?6 zKVRpN_vWVWorJjtKAWQVLvW=7PK4ey7z4Q&W>3FE32B&JcZXl!hh`)1HcWOC{dz3t z8^yKnBS1fg{1vWhB{^rOp>~T62OCHujMdjR_wH;j>#dGAsB0K+7ct%@p$KH&6J(9o z@)sMPQxkCyHy?gi!lMrdKxy!?k*jxL?ClSBVAZU~Z*!ya9#;8X;?rjhRQZ7Pmdhp$NKJDlnJnd7T)0?TqX|eFqO_%ITieo>R@;xZwB@U` zQX3QzFSS(BqVl;_F8MNz0WzE z3{47$qR%t?m+%1@8GiV#^nU>TZM4Fh#iJfh1m|w&AS+K8d_d%eZysV7I{Ov=J?4Kb zDEMH_0$zOZvjqhwxu8P}3Zh)lpUA3j6`r=t^88afoq^wmaIM z#{I*fLgFQ4k|h#R!xkZM3x7N@OIujkiOWjxP+AiKgC8Z)AOapdZrYY1?J| zs51Phr(?&DOWIy55tGvL-a==~JLE0=J`Th?;0nHK1ed|`|?Aiy4fQsB=lb( z^bb|~iHAMrg2PJxc4zBrGBVi`^Aq`Y&Ux&rjvVqlN~rfuWd6~^8~{&k;{dqL8;lB` z7}72Jo0**_HuRFiEZg1E$Plr9rI+l}YyNV*Td(=cb*El;68h|9=u;z)lplLlrb)QQ z)3)2gYk^zdKluxpV$M0wPw&V%4?0@jEP#s6cT&|Acv&Qvx0mr$UGAT-DajvXka)CE zkqs4G4KVc34*ftky;(8oH_p~~MV~vKmD#~0_vHSSK00FdO8wK4HKo}J2ldc_?UcYL z{R=(kf=AJ-;{eUJXHLLEb$w%N@-Kgt~d`}JGsG^JH@{itIhLx zJnhHldw#*pN!p#3{*|iKL#A?pja)IradJm-!}}+(!XC6gBdqp!M0fkkcxO(Sz9#c>nb0ca#8cjb;-zXCAH^*E zb#{j&Z|_IV6X=-O-o&EkXA25HC|ScF>~7&nxe^P^*PFN!6I_UQB0D>n;J@O}52sq^ z>I?X*EI&(Ic`spqW2^g@W_J{c8fSHX661TF8ka|t4R71?^n}Ifa2BU0F$(?5C;eU) z`M*W|48Q>MT#ECK3n*8?c6ZBLNc($OOSSK|wa5BCS>ACY*7x=D?SH}gvhSs<{v)uM zEl%DzfxYs>#siP>$GLiuT3;mP1}^vzrKpi)=fU_8&N)xBcE$!j%HzD-8Gq{m>H1IPIzZ@*&6RMBzW zzKXWz%Xtn6!uU$oOC`iXpdUjl?;w;mh=VK^e#rNSc!0m#BRoNX`%n*gxelWG|W#e4DQ_}J_9C;k);#J)P7jI;=*o&cu5xX&>uf@o7 zuL?Vxzg(-v&gL)Iotg*xwL@%}+OJnc(84tcXv}i`c6vu<3Zbo*Hws#|AMQMm+AP~J zPfA$o*h}mbR^3?!MfjRU)4{7lr{%r>j$iwIw|MBGhzM>zljzQY+`@kbt2f8(Rra zP$Yi!RCp}&(Ube6ScODqYT7vjHPZGKo`)2kNJ{GsP zvVLOyn;DD25`jM?A@khratxpQPZ;a@-g zrSdP0e}W%?&f3Y+QsQ3{tz)gdGqpcRvF_V@jepHc{(KhxfqWpOque2GLF8Th@#ZOK z;{eR%eYRrIuo=H2McRq!Bmc~3C zv)JF?NdW0M-7;YDJQOP0ul2vVfK1sp>zG3;Px0*IQ&3x;`?P1$UUp&k znuj*~Ez6Kl+3^FiZZS(0zPUM{_rZ!1N4d!6!n3SZ*li;4=7NBjfO;J7B4=!w{iRa^ zEr03uJu>G*W1Y3m#usXx3!kfXdS7-vRPRhlLVygsRqG7yAI_h*@XHpxQtLdp7wn@T z_6hb)!R`k8TPd7M;m4_s{V8v!Ao_#&H3*va@-MJ2R@*))w}WzQRRsvw2H%p}-Vp55 zV2M;ntn{%I=c?=R&tySS;e2R;Qun+~u2A=KtfbOG%E70c4`oWHe)~^zLI1(+wa%tp zv$@#C8~8r^BpeU(a+%{IkoJ0umo~H6R~9WBcmM}9G|)3?xA>dvPfvQ$*}@Brtn!v! z%!I?o*;^u%h&CsfD?3Q59Wute^|z z!}~nWp30J{Q-+Roo!{>|139lj@NOxN!`q=hY$;>OA*+fn6+7ps( zNnSIV_7!qM%eMuzrLEVykNw&?P-=8Tx|}H)EzdABC(%4jou%(OZ%f-mhMj4z^4GC5 z?RNm{Mk={0+VgvGdR`KNJ+?F*JEJdRGtV7koaHmLC6CD24v%x@UuBplbiG380P<&2 z5jzQdido(sbPVk*$Cqy?`*}&{!EKW_*MCxu(qk7*jlw}cG{9Ej;3v53`t}-5Gu~xt zJ9d)t9ha4Xw`=?kHSSC+5W0mQ59s+c2w7Lj4%N=Ivq<1TXIdWIHs>)@>Ttk2`TAYg zd7r1^nVf=F{i6M|U$2NilErfA*wXW2U5&lrN69>JSg7Ga|9B_({LFE2f>+7;UVJ1` z-^azR$?w{u=hUW7h4K>pTA!S*HZL+gz==HJ#@y}<@MXmra08cJ-?|ezJ4`iy|3Dcq z3%se#uIlSlwKFXjw6fuca$4yhhGz>GN|Cd610Hz*^18;;Wpn;aHi6{LQ}4;E$j-EP zJP6PqJK`bcQ0Q^~=!o6%on0q{08Ya~?;v^Q&g=5Qj^D{=ll0(_3?OPd?Q#48!|2sC zsEn3@|KZ*A;ic~;?WY)dVy)Ghs`{@tZgS?%5&~gn`LCFf(I}f}_N$Xb%5Lgf%CzNW zdCS-s6#L@h82$4ngo2{&l3_&K%iG_{5mzaEHV3@Hab8PyxQO0oANV2{NZFzcnKzex zJ98kC`m!0}o6nWk5Uozz3(^+GUvt@Y_G;(Vmo24sf9Rxfg%h9e1;dPS3tM6muZH1M*S@)XXN#+^o( z7ICLX)UGq7e=?5Js8GA~MU+b)1Lfr_tt9bo(5WwRYdOEf5gb_$?o4}BVcNem}W9gHj+Y={)e0wL0JAd@B6s_1JRmVbycLK)A6|95Le7u`9$5e%hU! zB{Z|AOv>tszW2I5MFj^KahVI{I10?#mgvCXx#b;mqMlXnIadvq8N>@YNaHlXh+XBk zqjgiPWfyX=QQ&z%vMif~qH!`!QbkoRIB-a+?AY2lDAg*zy)!*K9huw7`?95yx5B@JF(erezkW>Cwr7Re2O4>nbEp!z4{BYd_=Q#zNlo0@;rq{52!6Iu`+&`y&MC zrf;bLodH{!C#yw(zDc!4fL!0!#6KJPxLp#zMPkX;3EJ}ZuBa(J#AIj(Jc39N+UgW` zy+P`_#C~XHSw|h5_%-$(KJukPJ^wy{&p3eH?p*aP#j@MQt6m7iy<9fpslwm$QCtqe zy}~>wb3E^vbTBj;aajISsBJHxBPSMW2vYPZ@4$Ye>*miP66%DbCE71r_PlWD^{#Uw zbVPJqrnJ${sj#a|n;++%RV<&lI94{|FXg!>(D)u_=^x7-N6S|oa;};p`By#TTvf>h zUnUtVUo^TymRz##b?oKCqs}|!v>9)pWv7nU8E5Ok*|wXo{VcocNRrnOt}ez;5rtXa z@rYb@z1@s5Xupd`33yQJJ*$}+)p7%w%bdT&TwKFB{ChO5tzxKtmAGx}QzbiB4<$QN zu-XN5P`p5jI|$h5ReAe869vJEOkFeHC3od5tvib~yQ3O8svb%;LIEq0KOF2QpAX`N zmbQ9H95f$UEqpoa8_3Bc*D|6;9B;#4(ldO6BK~fqXE%i&@x^n$X%b&D ziLXlHC*z5ao5XD<@oh=GC7$@8N&JRM{Iew1lL*VZI!sclNjf4)4J36%41ULGr8{#0 zcv(Lfy62n3Ii}D_DTH5u99zv4olI)NBxoF8^%3&zEX1=y=FtCNj^| z(R!mRlS!tcHJnsWd$D=B;tP_MMc>kkc@d|JNLeQiH?P-w%DGy0>xsz{k=X7k>!<|z zTj%PHAPb)>ZQGeklN|SC6@-iahXK5JI(fTH^l|&j-N@L==UH?~z?EGxz8~`50OuVd zKI|{GdnDaMI#)yG$}Lwexhjw=9#8Z<&%3!jy9?y1Sg!CBJkOWORk2)Q4L!Tdx za1wQQ2X4Op5p}aN_iF4nI1yU;P~S?P9U%Jeg1gfmuTK`{&7mK zKWmRS(~|Sd*7pru`~EuaIUd7GmQdQ))bZvp-}}UFP#RNMQa-^cf!B0>NF5w&%+7R5 zU~Zs<=Q8Dl3EVaNkGl!b<1l*K`l-5ZuNpJ-r-W3V z$I6~~;t1YZ$yT052fb+3h^I6lRTz4EQ-l$l|q59kX~TBIAAh%;1GKTepf~ zDtmsPsKV{Lsb+LPg*>qklppF4J><#=&u5CRw;O!;Y{a}J)jwOD$O zCHu2EL<%~Xwso2yJ91Em*Bvfvn|+*>{o_Iv3N1*4>|mNcN>bL=zg(94vQu&UPSgf$ zjE**MT|6L+|!OM#rha%(0{Qi@Q*q{Qf2V;)QJLTKoOcfLdyCV}g0z}CF;LQ~s*Rt>XTbW!5DUbsae82O}ek?vX z{qd+>D*Ti!2qnk8?qC(XdOyoX1XMa8@~uAGmZvEhID zRqZ*KGe@1Rwah*>_H7k3>UklXCp%uit#Vw|?zx;3KX;2;B^s-Bm&~^(u9U?(!!9P6 znL;ZopXFm*Z$^sbY1r61brHBT%i8CmT=`a0Xee^!I5Q$Wq?eI<#vk@1YcijTfrq{g!1oEeMLu zw1cza@@Vs?{)FL=cXm6M%AY?Ae^9!@pFh*9IDd*_{0XlyykRBcc~MyNVy~?E0fl>G zP5u89YdHPSs~7K>A|u2YhoNkNM{X!xBabIy z^twGwC}Jln@5o$b(kF!tBjRireXsIpk4e0UrXD$yL_8**&6gE+n#u49!^Gc8=~B`P zpX@q#PcjGN&;ROlyoowEyvSw@GAYL*L?(Gjq`YyM16proaJFnX!Z;l7`N?phJo_tK zsDsGKG6AR9SH8b;V`!M(#t!xjWqUmr`q3#)&BO6+1``M zw)aYG?@KY;d!)P8HMaN2|D5f;9@{(Tw6>RR1Bt$KPU7|_#Afk;v2A_$8@}f#E8HutZcn{Jr^icT0A#_(HwxRsbhh2|7&@mvtK2JCowOKrOjQTS=xM9N zn?_B3Mznj&2dO~D|UMv`*>+FPF1H{ zPK>s^C#>j{E;wf#_3#<4V=t8C?u-X-$ z!oI#su6E1SZn@ekS9|3OpRfM)eR9<$S6y<2*wpjc7OsxV6;H#DrNG$N2?4T|@>=A3 z2gLh_EgVoQZ})6>$#|@K7>PLW4WUz>n3dmco)KMT9m{dvPjYx2=Y6N6?Qa}8u$}k6 zi&a|neOPrs{7;D{9Q&Q8?X9w7&zDVlomJ)QOj3^NOnFOoX>NbwK62W-itm;=4$8($ zx3fF=gZS6S*5S7w+kk(4Bpbi|2!}IDk8KuQr{D?%$Kj09W4i^nPjHoj<8VglG4aih z3989?=Gr68G^hhC&v`0qrB}Pn-vHC%*YVZ_|CVeTSFQ* z%@INETEBwz^{>|HtZnd+*m0Is!K@{pJ!`ve|2*-P*m||BWreI!HP9}hG~N$?g257} zdw7!5&4{SejY&DywXg}Z(UCfg?`MK7Z(lpi_O`?4mbb4TCjNAJ+c_0&+w@Z1oMGip zu-Fl=ciS-Wt7D0_*OQ*?Tg$r`urPNU>b-zRHc`|V+8uPQyS}NcXxpJ5Bw#i0ftm~A zu@La0{aoa2FhOD}`vf~_=dzDU^r>C^(o#AqxpWL?e5^!_(;w{4b8I7d#7sy#ymj` zG&t{UBWs+FDxu@K@bVZP8CJMHMjeOj$V#|7{XmzNNi^KuG9P&79Y#g!Ue`i?T?$FC99>scKsJUJ?QI3_OeMmNp>eyJ1kah|{uSim?J||-eY24VA6+!^u;nfz50zy)s`(L* zxo|Oa_}1-n;VJgu!qh?==WP8R<(sEuAo$UC18?!T zQ>4Mf8jnO~5paxDm!bdr&Bj$$ukOP41R*&Anf8<3ZZF zw~{-ikIeoLj*o^#f9qWJZL;Yr8`$>X6v$4N&UeP5iDexRYc%oRdhrcs4`orpN+I;=KY=2%}UsbZ5&@vZG>K+(1H% zvK7%HVaD>@S-4!Y$f40g`)kW)8)jm)cJ42DBB-fbWuhlo@q5$r=S*UM>G|iNgt$pX z+u^QXn$#^OHAPa}N$vU$`1t;#*&jGsPQaz(A!$B|2dc>K#r>{mzgxPhhiLvPU1hgs zraoSa*?!LvxdQKxLnHX;!cjVWoY=DS&U?7guT&<^vLbi8 zl-B+8_8bbn$xB(()$LLSj)$KZ1(+&O^!S4|Kr3Qbo!M`o|$HB|zFNT^V zXHwF*xTwER$UU)QT37ii>zgGMEhw>makkX^)hpyv8#k~))Xc5*uJeL_lw8mIi>|&G zLv|gKU2<)C+uus6O4?3bTh=kI6!bh#E|20IO7D7oGPG|0fJ4w?u(doY4TV(N_Q#TF zj<`P@6nmBLYsn(uro@r91VPfC^jn~QU5A`<-}md|KpzMCIMBy|J`VJ8ppOH69O&b~ ze}V%J7O44)B6an?{QCN(4dcRrKz+>;Z(ZZK%g0?l=hooj>wCfH733A>Hw6Qq^w)$# z`89!trn-86a9l8)UthN5Gnv^$fT9HPf zs#?ja_SV-2YOJR4lAzz~tFGa1*e}G;@1X1ATrvg2)MJyY)pScUr1!|(t<_$#8&ayn zQhm)W)lK1G?!WA~@VF*Fu$n<_2sAQ+F+_b` zV`RA*$GXO_KiKH4udWOEgTX-19b7urH9EMIo5nzV88AGstdW+wkMz=*fK-H+U)#ty-QxEtzq{QV8S;h$4Rtlu^#QNX-7wbG;BN>7 zS5yarK57m6>%GgRsEAnzv5GWM^AuYm0=4doL;i5C>tfeLau}wL^5uuUp|C{*bFS7-;BTITdzmEFW?Zm2f0vU0*VHcKPgClVfeWgr||PcTv6H)#z=AG1s-M zF1#ep;IXbyfFzYRnj>4t)!<#>Y7B&3i@>jFSQMy-ZXJn+fG<+-ua?TH>-~*3r|6!! zvnf+StZDEe3Nl|ByiKveYK+v^i$n{vnb~IQx+8+BS%Pjc6VEluRVbXfArNtSgML>y zxB^bP!U31BUb*dcjS9I!%tF7tEOX_Nt zxavZ#x<*kz-f$hg(#&z0bp<1h;X0V$4*C7ACE;*WXmWo3Vz?Aplt-cb#eu-$dVfO5 zL-}=~P{bd~pHNt+gYEN&k=syio~yjpwF0u2c^kt*Ff|LUF(M<4$eb(QaLCnE@AroM z3|K<|;qO7djJ@4s=}JgtslYXQwClnv>l%F}OKDREw?YMauD5ZqUpguy=Z&RZXtSPg zXy*I;OY*5PC&TXa~CI zvdV2;RDm>Jr<07Dx)q33DHGIAOYkmcAXGEB3$OKfTvJdIktX!NTA@SE-aPdMBM47~5rx7o=yPJ>*Z$;Jhp6V3~-hh@% z$`bE?V}PFeu@jb2)ydsg-q2R9&*=7AAEt7g3_+r$TGO`4V6=*epQkz9uB)|g%5TGe5!_vnqq(wRJeqZpymNJCR47MbCy z@HScYrEPamu1)9+T#IF)$r;wbQBC7UH4PjU%CKfO`doopm)LR{XuI!ZXWmy{Uuw=F+wQ7@)Y<_yHcr34!_WxSm-K9OQQ!{b%s7ks#XAG;wMeR}?f z%NwinZ%O&Ht~X_q+m!2hktX2=eXR`QXVi)sZt#Xf42}E7f^m~>x;Xda?ps&Z*XMrx z)4s8hvCGHK|I8Ik9{$}p?xsYR1$hg|83J9CVF}yBk}bwQPIDD}l=DnGVcez>Zg&%Y zKwYRV&?uflfotVTSG~VBT>Z&NC|p-thr1$k@8X(BP)2J^XiPWpAF;%{)L*@<&POj! zEg2tR>8uQ{cABwA7EISwg}RK!Q)ReFOcY*rp;8jRn_$H+HDN@fe=+8jY3p4S3e-o! z{_3UP`iNhMNTfB?HP$uY6XIyaSUtscONDp2$KPm`G~rD7W=9$pVJ3|byD*HwT4swi zMZAY;_B61jP8}7prmJIxX?K~)A?A;j3BCccf%ucjH+5=n>!puSg)*O+#39>Nw#V4# z4SR*rarLN(JemB};y+bOk-P@}`tgcXmnK=dUNakqET-C$762is%bFVsO-^>u6!{-u zL(&4_V$%=gIEePVj@51blw6bF}i&35o6HX%xUXx(TO4I+Nth z&bzjvqGaw3${NTPONRL9!s=ELo^T+HmN65^HEo(}e1R4v$9;50m-ZS(Xs;eSD$umZ`6wM0qYQx*!ms~Y#RsmiRJu6{O65?16JwG zD@(5RR9P(8Y643?!d{x?o=yX?vB`D<>4ALyR%0nmbSq{=SmD-3e11z~3B)-3#3sTx z5q20Myu|NXjCpQ!$=F+V?&`YQYX9=OP&oAA%DLQiwXV7_u>~oUYsCWu7E51ZC1YI? zyaj11&?o_bLz$1f&bNhWGYeZ+e3GU!zv zF(W&`6el8B%?f{srIV3Tu?$H>=n~!E&=g)VR;iRgCh>s!dWiQ12^EYKiPlxUbRto6 zp03}PRm(zbyoNSn9hQa5vQRJmg#rlx#7npq)ip}20(`t)JMt0^dhz;Q?nGXt2_CMH zFbq8PxnR7;UgKr)kxYf?9Ta73&7X&Q3Dz|!E2?oNYwMO<^8^DYmyp$<%xH)xxP)gC zAd#SuhOWf5hQGDmP`EnMxQt*!b)d1jW{JP%78&MvONqgjtR{Rkt|_2_zi}eDKIoF- zxN|tOv4CKbaf`6jJEfsooTK{xmxiHCds8qvDF#$nBw?@WL_Rt@6N&jcHt6>--{XU7LB__s*{kS--~$K zt7Iks@tnj>o>d=MY=mFehD?*iI&m(H;q#j6d>7`qszj)pSY9y0)IBG}NqPkxDXU_gY?4U?oasg28dAXq znBPH`*E%nzE=0M?wm@$p0xk9eJOh6*QwW5z{ zYpiShC18!}RSblhxky~zx_*gYo1|?!;HMfU?(%7{xAX==nB}wQ&750R?J1u=w`6Yl z%y~ktcWI!`$5ai4gpo80PJ^cS&UvoV#2`sPJG?Y$*LXhB0ac1S^RE|U%` zU?ulva#wpXE6eM`$nny^E$CXwsncHDgn#^x(9*h*?O>j(jFDaK}c%tnoY}7 zYrXX$|5z8&OG%lYO^g)? z1X(7nAcik?gB4}HDh<0y;jKMCXkE2wP0$;{NoyoVLbRP>GbN>O1)`rA#c_e!afVHK zR+B8st3wfd!r%(g7k16Qx{$I{)1|PHYLii-_B{lxhgLP!+M#s(PixLR*L<-aD~y2o z0L6ka=uxdTLln8mj4}@{ zj!5td#bkKS`g8G8YX;gW7^r7x2s#jm7CSj6Bypp8GiO~F8~zx@8bb^E7vmH7gJNcg zqpMyFnl8kWl2cUG$OtVH^A?oB#eZ zTfB%}k<)jCcvy_e|DXHeU4%9MC*6?P-v5Svu)Btv^-nrNpz?o7Kk(L?{z*rw=9X0c zFX>5blmDM|gz)kI*ZolKQ7zg-l~%Q_bF5OoL{PC*J{%s*A)QDvQpRhIDLd5?Qww!n zU@Le#>Efw{#%_oM-n2OA^Ca<#x|mkghW8xv**m6iN|r>OpI~DI${UuiyM_%CCdi> z7rh>DMGroRtJ*guJL)}^DfJ?bcrDjcy+iw zRK3_A*7aJFUtZlU0h{Nqmn|B~Y43E;*yj(`uw1fNnH~ubX`;75wn)Ws5U!1b3frS{ z`|euP>wxsDCb2$BcN)(ZGWf`t0UIQUJHYXN3anO>`r59+;1W zRPBFnM2YK%AT0{Xo)}|hFWJ}?R$nt@Cbn$9if?NCK-X;9*LC~+vI!xhA?pM>Y<4ji zbx}9Hx}CW!bHh|6xn+bF2N2XnesOICB@8lbv!{|_p-*z@ZoToHZDF!o(K&0@C}Ffk zQV&FE30pEO8pxTsT!v9xIMFMl;Mr*kzLyt&dz`qIR)ThpyvU)0YF1ByP_<4NdRW~M zvgU{n>Q!RI>7GzDPL?u|eR7auw!N7YTcpZ5&E*Rieucvl!O`V_O+e3<3AM5}DyBjB zRHNG|a=IkkknG6!QXMnKY@IN}Lwd5NAa5YfeJpJ`*GK2RU~Z z*WfV(bJc85%F0t$B3Kk3yToQrLLkPa0o4&9I=rk=Lu|spr1GpH)l1jV7spHDhCn7Y zAvHN!=aNG#;_KUVRCAulsuEKWPC8m7>L!*$i3r74k4$$na`ui)q7)$-R#&P^*_*CL zq15=}yARraJ?qU_$W9bajsFS^1GdWq4{qTk7%ON(4PKd6myTD_YO42!g){bajGZ~M zdFr!ty}}Bt33JZ67b|9~YPNbs^{AWDYVj7R#vx7L|>NJ<}Q?hv~YK zlR_qI5)lKNV)Mk8oa)xETtR6+QXRBAm%$5;kc#C z<~XzqTUo=|3v2h1$YOtP%sF7u|?xKguy0? zg&P)WLVexhZIvD zKqYF)Fsg=1gyif_>$sY5aa}`GeO;}{5aiTjL^ZI)Xvx$y3vZ^@%;jG4u~9UpbY|(b zmDN>quAVu2GGiYgKpGs^;H_&M6X%^6>jDWG$qD)pX{=FCP)M&OmTlsD8q`7QCmc>G-qiTvnrV_y8tRK?C=+kvLo|Vuc5i~< zn2FHXeTfe)m6Q43sk>=Wut(+HtB$itGX6UiGfTS@eVTg77voE#T>m?~Z)6sJs755? zzg2V1k`E_5@88yQy%jt7-gLS7R<3QkHAz7FiD1tGigtQ9KQ=YRjfV?OzjX;KUT5GXC#Q zyq9xzI>}TpO%8&-|6(#xC(U%PsW+jaK0MNVKuyyM0eXqY22Y@G+^Nne#PX{nnL4R>~L} zo-r!7k3!gobJ)(}#Ies_$qP-3WZT~ykH9q>6&jO)SHp%kyH!@9wSs9Ow8akhoLU|Y z)1&x!CK5rQkQ{(KZL`VIKejx&6L8v6@_vtR^lj`=nR_#`#6a(ZL&Q_OA;R;Mb0`<}LBN0o|!%eqLN5?T-i|cCWfcDAlj!Y=JI9JZWIX|%?ff^B0ESK&yiY}GY!IM#|5}Uo)M5X2739j`K3gSR^U;%Y3D{G{muqZ3M z6;0R%I8+_ZuxxI~14}lM9K6LsSIaiPVIBxOFjB1t4MXzWl6^MUKF3>DKD%nN*hzT^ z$SnVB;E5LYhM!w8DLfHE`;F_SC|Rga|XgT{8j=ocZzlY;w_LHgOVK zN-)D5?lcdN=)+D15r6C=rbFeiuK&R3V;oI4^dw&p70zHXHenv@35BPKzMJM|sPxgt z1kvV+Pa`KH`u_>a#VBLkCGxGr*U0RuuH(56J%;BlxYh$@JWZ9r%W1<~IMl8akxohS zqH)t^h`^f10m)#d^72GA|Dpcj^2l+AOUG;P%26C_SowW28e?6z%+%@qDVmxfqv^Dy#-6Yh zk46;85VQ85jLq66uZ;3Y`tCq#AYASh3$Z>wZE0*&{?JN#}m;U8s zbQ{+`J`(jz9&c|4uIGLW@Ihes$jRt_N$35xMFW9HPez-8TmE)3x&@f?_mk1xz#?E5 zunK5pP!2d0xE@#p+z+e=rXD*PZ3T`5-UqA#?g09Ldx2r#Az&-eI)n1S9Nl@EPD1;6C6E;8EZnV0tF>0fzyP0t;2vNn@F<_JN*zS{3CaU~C!r4*2Ks>efvv!zD14Q4 z;5J|@a5r!xa6fPh@HlV>Ff)t#fiB>FU=c9YibgAeIY1w9ByhRhJEGC8z*gX4;6`Ao zllp)|fjfX>fvG9cXfdz~SOpx}k2jjjeOffSTVVfa^aL<BewjlKd5J86Fi^kq{Y&CL#fnng$bKwWD=zRDMECptt1Kq%pKp$`- za6d2%-1sr_1GfNo19t%T1NQ)r15+=c-@M!02P^{a9~F(>4?GIo3``wOzknNo`+$3Z z$ARH7jKjI4yXg-wCzt*JeV0U|4+4*li$;$Ei}K*td9)8420RKZ0EY7!XW$Ote8Cq) zqbq^FLii2b0^BU=z#YK-z`X)5W!%pve-Zo#?!TOI6*v*T0Y^@PKHv^sL|-%v{!HbS zgTSM}g}~Hl@CCRBxCXc%ct6nhamE)I2JQp40*?aM1Jgf7|AE7RTYyEtk;T*tYy~z8 z9(X@+eF^l+J#a6ubUO3^_X9^>K>ahAN5HC5+6U&$WL$uy!2Q5h;BnwaVCHb>odth@ zIly{g7C~yaGOIb8(x!`j-bOE;jmjH9FqJH2=;Qf*g+zi|U+yOia+zZUPntlSS zJkU1+K2*RbV9}gtbQADsCG-F{&W%PFTnJx*O~C!YwZN(>_z&~}w*Zgw9I|y0bn?q0s zi-9|URluAE`VDLiKnJj>iTe3^&>rAK;QCL|FS!p=FK{H^liUof0zLyQ4KwaQUxfYw z*8?;8FjCRdXw(G^1B-x1moe_ZJ-4D~fK{KSf50ukwZQ$r4U+yD>IEJJ?gJKm7W#o< zV7eQ+fy01Dfd#f2mAt7-Gx2@9t94~1%8pQs{r?}r{BQ!UqXKX zcL28nx7@=xTui(7!Y|;)`=}q-%G+x<19t#-0QUg*0`~(C0gnQ$OW^lcnBTx0pc^<6 zI7RUH(_i40uTvg)^qb@#OFiF$9^j7eLN_q=LEe%J-10r-Y8?Ig0pkiB`9tIiShN|v zl?VJWdH`7Z6X*jT{VC%I%-OFXTwO$N(inp$0d zJQ*b$6%EK1Tmk=5yG};a1ji52u}b;Z{0HnJ<*cmiE3<}P2PtPhS$(mT2)$C{)u(m&+4^6$h-|Ccpqa9fj zOR@?y1KG%&U6PevLN;DZOBLJr=YHp8^a!w*`bx5jldDTL@9KAVO3J=0SBX+ET_`B9P}P=v_3Ze;lhIE|`wOzNTT(ugmCmK` zbUtZQ4xNl*N|d%LQUu=wz7)L6#@}q?*MRr*$S-Yd0AJMuFGY*^w~e&@WFSt!TaEHL{0+&pm)sMN=1D6A?6I_fw88RjRt7E;+nP?>=J?n>#m+#&OkSt)c& zzqXRs!&>Q;Q}UXA?G<`hD`k>bep2QTxO8vhUgd1jfhC0vfY#4PMl56F#t&?@!nq=IJ zHct6n_i;lLiw-KLeAQo1Mr-ZzjM=QL&5joIcgjp1GgaA}9kXLMhQ8<T8iQo~;FU zA2^mf`jdWa0Jk1oY#ar*1>8DtO8?Df40eIr25zR5T%46X7VrwVFN(;=~pESUpnpLO+x=!tH;h}oxw$@ZjQ*J;etLN~?dQ`bt?ye$Wy-DLzAPE$lpoX9hCi>T{fwmdy?A` zz8#YOv0hi%{TW*Vtm)5ZA?w4mEpX*Tx@shH^t$|6eFNAz7Bq z`1SM$UhB;ti0PuC11;+WbuAToscUu0j6wZVuEskm$?Tt9W<$fnQu0<3Z<$O|EvtQL!vC82vCdC@+xJ~NlCf^M)k!1>FRJDE#iObUY zTt&IvlzZ4N7oX3x9iPt2x=&}4)TdoX*(zdF%RZb8KXE!4E}-pKgnr^w|COKv8WTQk zFsAZh z;5LAB3Whc+uv&tbINp8W2^%TC61Mmv8@Mnwj71eE6dyk2zmxcFkCoUyiC69=j<|~J#8`FnxojD4Iz`4yDRP4H?iALEJ!MVj z$OcD}@&DE-6_jMj(!>%vN^wdGh+9tV*@sf{#0CDXo}JM0GDfXZK9#rt*YXqGec;A| zL#69aaGSun!KvJEFZ}BSHxgV}a-EKU#XXxY&^7A`$}XYoL%sAL9i7zwelr}sFrbri zLRTpS?Mv%U>wIvpfQ!k!pZK0kxcFR+ucy__B(J9j_s`muGCgZI|2k7r7IIUVvSyH60avi3Pr)~TG!++IT3Hqx}8v$8hyyD=+W$~1%D z1OBV=GGEj(l6F67^RuGS)$z2?YMRb}(w-qL#U49p4uAe}J4CQg&>sHnBi|NhG&;R^ zpY9YMy?Gj^u9Na*)K@^Pe9M{9=pDV+SDMw-%}1P{(mP|DAj?`wUB`zI|KVDGf|J<% z$ed_2q!@$S2yPv?3W1b!vBTfQqPG- zKd{?3wlGOXn^U?mY{zN%-weOq)VG=Xwh*(Iy|Ny9e^X5Fi(f5cCHoKeolCszbYs=s zpZ`s-V?{j^`R8VjV#=_ni8Y;0&)j#ao)J0rQP%nx`VnCGxHO^vNgGL;tou)=zxrL3 za!SQA2HPmR#uYU_D)%zac7r<#ZX?%LN+c`0F)Lm2c7b0zqWgHAkn-TROJ2rT@?}#= z>4k}WW5JCCR}Ah`cE0!+VkZ(dLK2O<%Kptd^2-p(PwHI)Zfy_TN^ony;ikmfUk9!g zT+Ci`Yi;CDb5dE!uKfqU9DIWypuY&P8{8gn^99$#wu@(=C~?(@QkrX{yVBVcIzc(r zPgjbp-w@X|BT37?C~ExCd8&^kq#sMp7eHfr*RW`x01J2@|wEt5F%xM?jmjMDE4aXwD=hHzV_MKn_7~3 zvI$u3pq|bTSI_r*t4I1apL(W@j+%Ix)XTqmaPz?xb8Q8TyfuSs1@|$*@soMG9^5)` z@~uwk=RfaDze`V}GK!_meblvaOhTT8=SRV90H<-=o;X8_1>oL(JyQY`PWc(6Jt8yWAHB*=D-G1+Mbakt1UT@QFW>#gtd8cbb#$`Wk6c^a*D(+#0 zbsU@r9BMoq5zT)hyU5ZM-EQEDS zX~Jibe&vAc1lJ+y@qWejRqQ2|FUch98n~dcJI3huh18WgGa7xst}8aL@#Vj&b5zT^ zl$N#RT|?d&k4I8Q_TXjjTIdqK#LA-=ieqzJ=F%?mZ6e>BlF!g=&m~%VR{3YQWayH; z{Q4{T9H!*&UavM`huYOfjb!q!Bd^+jPi$|@o~KEhKr)V%M$gCiZ1%5GYLd8$_bFqxg>sdYQ#(sv1-A>_0&p&Am!IHX0k;I)Rf;jP za~Rx4a814Yggs?vWUoFUxx}}fg3;Pl9*zD`>Nj?zH+}EzuJ3W0=5@!QHq-{Jr9Ssn z(dZZK`jW;P*6E;%=R#P*T#I~kQf576ewru~i>p2u%Qum+~Dv zNMbhPLOJ21oUbVG*s+#|EHM$*L~!-sWXwh0T2gA``Kw54Chef4@sn{{0&YPCVuhPFM9tEXY=>_E7K;Av%jiz#=VjuGn zI3V!T)b5InEFuGYD6`>{j1|`w{yOW{T_T*)m&2rmIs5V>Ni%ac?sJsK^b;6~v}m%- zII_yvj2*!|qUTs)*N(6GybATiwEwHPo|-dV2BY*yYfU zD<#tA7V=sR(P)k1)HYMr$Lf}bJ{7y66LH5@mdDDA6V&5wwAVF;_ETez-%L^o=wF6h zc`@-q;xCk)3JKOiqk}!*j)Q~M`V*cl1a}miuJO1RTo~Np9{JXQJJciJ{ouNKs&wdk5UCRp{Ybbjt5;gl{|B{ZB4ZXQEm?e$5?4hparO3a~acW(& zvJUs_rXSXv#xXlgd7*72hQ`IYtjmPIr`FfQW~MxPI@*Lsat1Ajvs|10$ylY_bgIk= z9h)e-W+ijC_kNXTb@P?`UC?W{@Ro&+Uj3nD zCgntL{Fs?loU*OA1h^@B?>^cXb_ZwXxE7wLuu22e=-*lTw_N`&)W4SafX`5-i!x^< zcpKMkDc_H&0-gREw?9GtT`ke*cM|zeoj2Wl0$Tylme}+u7^I1-Y~LB;%qIp@8?>4fV+u35521&1a+j&%yO?y!*f~PzbtEF%Ya!~#f{1xJQSUe zv0#npk1ff9SCiOMZuK*k!~0Hayw`A4}h7;~##nSj+FS;je7C!-fy_NRQ>)bCGFR3n%?4 z__C=l38j~vr@=RUrT6^Jr@`+&4ZicMrXE=m%C9GU)}Z6~y*=)S*#%4O-G*#$>95RAKi|HW^`rdQLek%S zJDqI-{l&_s+V{o%iuH=4+yS}RkZSH@Yfo2(x$iHD{MMuuD~#>oMC^)U@votpYFTI5 zFa{)~p}%I+9|>itvaXh&gnQ-3Hm?2(vWpeQ@LQecKGu)rnrc}b{ncNr{gYAC zpX0=g6`xooiVf+3bJ6$vV2mdsE#_**l2@`DjxYCB#*|64zOKrH?hWFU;yEgop z4R_k`MH~LXhJUwVe_LOiZNt$voM6MAblnpzR@CQh{gBc#L*IQL2l_bB$ALZ$^l_k% z1AQFm<3Jw=`Z&sg?RIf}QY|8% zJ@xWc-zih3=zR@ejF)f5)`de;xX zEQ??FPr22;9{2-E%ovoF^68X^xHP#9*0Rpn04h5*<;%QtKXb4nb4W^NPHN^^&CRKq zXLH0RIw13$W`4`9LC;Xj(6mKa+bD2u>bVYQdT}S0&h!rXOoKE1ZkK{}`3gS2jRQo^ z^e=QN_~Ho#>xa`vXZn{eRd7$4f_raPa9@LhFE3T_l?N4kb*F;+Usv$80UWAwrhol> z1sg6_@U2n>-~NPxjg1Pv`vV2vdqTmcw-x+Q-cRaG-#mmz@to;DaVz-gl?t}ppy0pj z75wZr1rL2e!Pf66`1u|Mzj#x@!~amQZLm`+`{l(79+|7)SAGTC?^N*EHx%r6NWtUs zjRa@<&I1aba3EdI^j-2qxHJ99Tm?@}SMc1VM})UNQW>aJKb%U%eBj0tmRVf zKQr}f>CWp0fBoAsg!8Q-UvqvU{Z(olCFIBh z(>nWW&czOs!eyPg9C*l1s<-dI&lHxdP4@k}l77wuSL%;uD&UU+iWV6oQ^aJO;GG!cwpmTosBj=_Mv{oh1ayl!wN%L7pKz=86nB%<7 zPG|8inV;wX_$N-!K)JGpZE+6HKa=_G99%F$LE&Wz#?MqxbghERZc;G8ui)|q1(PBQ zCa+R(#g`OJ`Hq5V|E=KTk1HtowSwtyD420XL8)ViG<)Tl3TB~U17b@_S zD5$tb!ECRB%1xLc4;?zb;^C@qZ~O`MHAWPbir2f`Zbw6wExL;L50i zS%Wy@=NwvgzJl^x1y^0J;OdzQJo6M>?-g)fQ9!`?w|!PY^PLLrctFAGO$yq!D_AQp zMRK0s@tT6W{-ogU4-~AM$w@@#`JexUf-eLVeDTu?*59e%OZO_c=K%%xZd35(XB2$p z4Fz9)U%}VT;>|kF^EVVI`1TY98?RLGof{Q=cd>#8Rw;P!>k7X2kb?huLcyjt6deA$ zg1?@_QAg+bM=w(Fw`&k6=lOrXRPTG;h);B zAo#X|&`Aa1vpIn393GKRcsPeIougn`wSwg>3RZkk!DsJRaGQMG!#TY9=L&9rR>2*w zDrotWg4PoXR%LT`)j52%eD%XQ{LXv@Yl;=LRV(;hL_vFpf{uF>-2EK|>wcl&^LrG0 zp-aKfQ#c>%9R7=sDR_92f^C%wei;xja&EhVd0$shrABJxbr0y>^*>W^!{Z8W+@oN@ zTMBMErr_rOI1tW})n_SKD6bT8j`UutV9|61HPA<@4Ez-(2JYaG zbzwHv^-~V_G{;3jN66v!I7F*yn#pic*b#BKD^Ec$bu4qZ=R3sO4}4at(?9LpS{E&M ztZ=v+9CD**>!Mp7pLV#HIl5=G8(8W1jKjUk@w`-`f0AnYtm8I^`}4i0HA`o{mXxOL zT_sM@MYlWdaJawckeh*fwVy(0i^KhK$3?ARkXCqsFmA2G%G!ig@}v%RjN+pagQS&ohimk}wA9gOq&U>I zb^iopt~gwwDdu{K%GCJ{~-BL)v*3&U7VKQf6(BMN$LJhYw!hsl#86yOK{V& z2M?Dw6!#x&4IYsy7wAfBv}-`>SRr7Xys0?V8hv4ZN8Uy0xHH_29GH_oDr1^M1azQO zY2}a3crit9r-8G^%;4{!tNAk~E3F{Sz4wg5!MT$0j7zP-7hg|*&X|xs_!7OiJbUn1 zy_h(3@HoAgJmxi)drgM+UU@8OJ_HxIsgqg+&P z9XwmxTG%;w&St?Z+F^|mmX7gqS2$se@MnvG2awWcIhA$j6u^zR}4r`l*_U5D>L3rd4W6wUz0yV#K5<>vc|m3 z-_h5kr4~tQkqlM-+>HHZ;3RFJj$Zz}jDMtPDS1<|DOz+Emt)T3Pp)LlugaKevPcPA z2CmI0H8^Q(pp?DLnsD9q8O^6)^XF&$E=gQ2zaisQz0LnbM!7?{H}Gz0S+Bm%l~p8K zX3UrQlPer7`nKG5(y{y-Gu)#`Qf5F3WgWnVTq>zdU1lKgD%t{lLed#VXpx-!Z@DPwsR4 zDO@r6){NKUHCU5Bo#F4^gi3%ld1XdJcWP|>XEGM_mOuZq8P_Lqpo|quvM5z>KSoHN zd|Sq^;;oyG=Qn4paIBC5Dj%QW${KxpYI@NfQb-!hza!(bj<5E}(UO`vxi#aZ9>i$r z{8bs79HLSZHQJMNb;ge!qAz+TOujSY&IAjU4!O1R*JPBMsUu=)<+o*|nAO|_SmX}YX*p1;d@%g-8b z`8ne)?=^1nTgFY^Z~Wu8jeq<{<1}}Pn|#HEj#S6_FGv*w<)eW52Y>KK#x2}z+`=Cl zx9}&%E&Qptg;xGO8O@GwNRcEdxi>XC|Gtc$JG81e-i-C=FQ=vFeS@lv-!cH&nD zq>quc;g~;?nk!dsxtj9bsd}wRDXidff6D4I<)_oKCrhBp8gwqW|2}i*ATg3Z%N#W* zm-~m#JaG3Wr-yK~MRB-a18 zneIXFasOP-dFtRipLy}1fw)0?a?V#H`$Fb8E&Jk-S$hAwA>|794!KIQB# z4=L2PexG^SpmOeC88Tkmc{TI$K{s&!+K@}No!9?Qb>AKzS5@tQPSO@i3j_*D!!v1{ zzMx5F@@{FFG?}z%({xBmDOH?K=8+7YSLcy51*9M-T;N)?C=ZbW^0-%!`T)Et+^T>) z1nX6qTY;=A8gB`nY0s7hMyepj{4a`$Fc%5wMnsKUM9p-2J)gBFo*|RhJg-8vatfy1a0Ew3{%iFL&ykFpp zuRQi$WytF`j{Q${;XT~we6MzmOU(kZ9 z9u6e-tUjeo3CcS+x~7=b8_LO|z!^$zj8#+3>S!6)(ACq->XtILRdpR^R_`cN zxz8az+^p^`R}DP<8C}!O>W$@OmzZt=k1(rGEO={l%`mHP=)LtiGAqi*+hv^-*T^igFb)P6`z(l^&~(Hmj2of!+$U`cajR4`T_ zYgYfjoUZhl?pbDaPUVa8{{pm*Mlp~#RNm-f{o%%{ z6A)gBX4i>kbzga*E$=$XtlnI1Yv8+1h68S;xoDkYRzI%X*h1cYs#*QCYOw7OYRu{j zlnRi4V071-)gM<~LIGPt!-=`(DTl3j1l`R%vv$Lpr*Tnd)*Q8VzPWmVS^IX`^cR2_ z3&>v6z0jGo(+sNQP%^uk%-Tddxu&3)iPC-IlY#ewO4cKJ`SFe&`}%G zwal#jl_ib)&M@aRkY}rxo3)3Pb5GEGdS$m_^*VU`c+D20)-gL@bqiZ!X+me2T z9H)#hx_ZspetxW;aM4UnmGx<)Ovs>oaTbrF83FXV!jORag2my86x9i|ujk zT5r~#ZSh$Z2{nM}_L*}QsCX5yuCvVA^K1d(AyC(VSvzETq6(0NbI{yi)_&j7leuS` z8_n9s`I*I^bIjU^lQi~h?k4kGv-T;AtAf)tyP*YcHs>}jxB(Z7mP1cjLv7zj%)0sA zA2sXzDoRRA?>^703tMhKX4Y}O@>9QAH)46Z#jLv}e>+Z~BM)y{;?w>5TF>`J+@p1X=j+=EiQ55)gA=%{?J^@SHBDz{YR|^#O3&O}Uw{SQ9 z*6n}I1Fz7ygUoY2YtC0)LO(%rIagg$pR}IlWq&LVNYj`<#n*$=34nc3T+G9TVVt$w zEMH>|cxpX#XVieqbFMQ7X#%!WKSN5atLWp` zWgTXD9cERVjq9~AY6okDS3IGQV z^K4c}6rn0R4}r4_ppH{@0n!mAKTjw_+$g0^EIcPCpE7}+)PaXEfaB5p^7)jEy|d1& zu7L-qG*C()^G=;==qJeKS(F>|b#Bxa+>uCF!BvteLFlCmPj%$x)f)wm*hwA2H=n{c ze;&fJV#W-3zTjw;bqg!hY0-RjT1bNU$K{;#~O=O^GZd0DNP{-YxPdOwHhq|qv+4DfVmJ90@mjWsQ zOLb;ycgyl=GDAaWEQ2V+SiVwuxMFF(oSi9tOqC&G(Kvl1{iW7&sNJ9$G-qrJyH4#7Un<>jFhUp8}PcrQ_GGhKQN_c%KWKj`E3^*enuGMER5WK=Y}1_Fr8K)G(5ahZ|ypG%&qQ~G4Xl0&MI#YE zJoCqgSP)%Htg$jFmP45QW5E&rAHu0~V4(9{|6uQCuYbe2KCj_;R;EPrwc*E-E+mvc5{-ouNt`JHZo{99h5X4#Bon4I z!Ud&UFqcMh#d7h4kxOKv!-;UHCNq*u`NIv2c%_M^z9sbBzCKyOW43&@IH{wHSqyU|=Nw`80QR~!j zRzSv3(ugxJBO@|$2`&wzk+D=75oYDys$zLV0zAq9>j`;)WVNf_= zq{G90l~w94?+Ju*NJldT=@JP*@~rfcJQ)ij`0*hm3OKXs6i=yBG8R+k)VMljQVBXo zve9_h$j0fK(gUZ2I7|fDWg^HM7|kJB6r%p}<(!_|7gPGzSyopjhp4&bX3^DRV|6tZEyL`9%RnfE zHrG39m-k`#uF2=IssqjL9 z7Jax7<(qxgB^=6saIdF6;^Rdr^5J}H&Wr_8-T`t>S06IQ!O{rZdo z*-lL$e9XF9^;MHwUvV2tPyJL@3e0?4aKiTmhkRdfj;>Y7%!!ZrDnZRG{3l$b(WMBY zOC^IY{1FL2{zf^--zhiwJMmiGTY_G=xA;~R_yUJT1P7lUaUqWdlZjCS4GTJ?0Ga|m zDKMG|#1grez5yLn`aWr?-tD#j!Lx>C2yKT#mf9Q2s z7fc7BQK9vu23(zDd_rTL8P8-9K-Gvs3NBQ45{reRqf{)s6yjJcfJX{bp%mw6NtHBe zQq@I7q(gn%+~1LJqMIPgi&f)(eOButtI2%uq)`iYC1tCzW z$SY$sB09vVK65D}r9yZ666ylL0!K56y#AqC#V=$VGMUmASJX~XX&uwW9T!~Q$GBYL zkuLenPRzOvjOj`+rfUH!AH<{U!I-WHW4geP<*R}O#Xv#SwL-X9Z?n8N3Hm+%5uTP1J8*=X~ zuod-fI6Fej246b!HRJ7#5OKu^23>xG?j~TQg68!FiFE>wU@|qXIq2G%O{beL7{|!P zDP>*mY?1~9PzI=<8(14fE){?Y9J#!;@wX1O-}U5LsC!@oflDL5R=#xlL71qvEP*42a|7>2zVVxpyp_Xaoky@M@& z%0;a?O!h)dkz@6m%;_}~zCD8hRSsp%kLFm7y&PYV@vrJzzp}FrT)82Cub+qQsZ@P1 zl`^zN;oo2Lz*s_7mb2B_@~2sz&$Dc>JXM$4^)K@*B~rBO0!xV$V-M`Hu!P{C*N<+( zncocRwG8#?odty!l+6}QDWH_7uAdh6fWL!lP(ONa2 zH9Bk^I7{bYAv*L92hxL8GMYrrn^0(pj76!uM%{wdk~_4}S1d1gupCRG{7}aavc=#- z%aW}|A6mK~`U@?fvF1LN2zqBl=T)r^Iu$>a5wwILuL6V3ph!1rlaLiVvnKL+o1JSTnP(<53)rq zU78<@DAN=z|KYH4Nufm%l9RMngjKxDtx2qk5Uqw){?N3bDp@L0f5aV?6Lqr>VI-}S z>~&c(?5jtdPZWn^G@^$Fv3C&7IYR$6YYk63+PS|?G*n2==&ftr@sh#6Z9Tv zItn&T0n7n4f;=EH&2Iz+KqDaf0_=9sWuU7;*Msf?T?aoOz5JrDXV z=+~gPLFMSL$f#chx&UE51?PF7C7@;yeF?A&vq=H1N1Hka|6Z<(D9&CKnp;Ppbk(cs2Ah|odfcN zBA^6l473Au3Fu1DwV)e7w}bu}gc%;=t2loX^f2gA&<{aB1-$@z1@v3cTcGzq^i{rc zxS0u>1v&vV2ecUE0(F48Kx;wgfc&61XcTk}=+mH^L0<*E3VIV%i}H9nh{|OU6bD@l zx)=0w&~HH1D1WDb)_^vFJ`cJF^Z@8B&=lk+CV$mT_-vf#f@(pxBL9})d>W_?)B^fG zXg}yh(Cp`?CXA5W; z6bI!%7l7u0E(QGq=+7XUfW8*g4Y~oe2Xq(cE1(BK4}l&5O~InCAL2|4wO;_e26_YZ z7U(@tIiA;pW`bx{_sO97pe3L-kOxGsY!84w0t$iXrEPj+`(n@)pld-lg6Nf!dqDSt z9tQmY^kdNTpw~b@0bK%m6Z8RS4tl!F=;Z>OdqI7m7$^z44s7hsUVR}-t1}TZsgNjcR!ug{aS5eS%5V`H^+qkZ=t&ut>#fOTl+@P|n zg`0?ofkZG6DFXpD(CMiIy`2HYQ+*>CUAR#Lss+(87c?KVm~L>?gBn2ONfU^UcF

I3zI&H`-!(U55)XcLHf)Q^BZ3i5*jpa^If~GiqdeN`W7#!UEv6|C=ymrrBPrdu> zeJ?IP@9OK_y$#_DkD4}P%Gdlu&HZbxKJ`&t7%a&ObFj`&Ivz@t-&Dykf?eZra=Y{+95L3f}`a?Ktni z;`i>j^^wB|8>&ZMsf(Lqty`>hjRsXFt; zrhi*|>As5n?=9>*I#_evg`SSHuBw=O%?+LBTv1;3xwDTs|N1*GKk@0GOnI;G4>QYu z7yaG##%~^d`ge|7_xi!!TdsZe@vAm_POYoD`xlEp@$ygB{`sZc;@;%Ov0wgb;Hqg) zugor6J#zWcJ$GN8Ie+-!tM6U5tmY%j-+kz|_C?ozefNdapZNCG*L-p9E#o)8b^lR& zTc_Rh^0uQt`_}#wPh5LJy=sk6z(^a~iNZ>~3zc$e#iDC%9P=b)a4dI{>GP%lEQ2lZyugHSI- zE$Tizqn?(uGim`yQ==Z2dNb0RsK=pRj(R}qZK#)`UX`>L>WOcFjA{^RWz>67??=55 z^-81-QLjlYGWB?*;Vi+KdPJ)E)U%MrM!h6yD^%;L=cC?^)}fImN7@_pY@`8F?@O%< zX?Oc^O+6~LhSbwj4@*5W^`6vIQcp}R2x%pxp^?@}y)X6L)T>jgLz)U{Vx+Cn0dG{@ zr@B55v;@=&Iuo=SM0ImBC=*ysQfF1%-`u_;@9Oz}xZ$Wxk0T48)ygU6Ck`xYg`BVBIqvAUeLdQz6W{= z^ivS6cKH?P51@BICgOPnXcp)s5Ef+_^`JJ82hXfdb>M4GM_)DJobv;`Cer9l^f zE(2Wy`W)yM5NWi{&E;s4mo20JvNHOgGKK!@>*>F;lKxLVnf~X^qyLT$`kyt6{*6j9 z*U&MGMqqT5b@CZ`je`V$d zOFtr84js$L%0I*WQ&@qq9 zO>|U}RZLwxD#$$bngu-yXjeDOqmz##&4nJ3y@QTz~hFm7yFceKR)Ymt}qC*YC!C=Go_Evvu^O9IJk=womdq_37T=Y2q zizb4xTqs=17d-7W;>8-VjPXAa{J$%QgEC>DDYOkVSt4N;#t-4Dm_@A(Y*71yH5AGC zZ>Fv!0xvKqns30&vtANdkLhn1_G!HuU#jU618y;e9*GVE#1yKE9WE_aSKI}anN;lN zxQ7Kg7tE@abLuV>3P+S9GHTMvWtWl%a>7#d3}|^mitU zadd?To#Y>5ywIq%kAjPGXrG%pobXxs?^YJLVKFd{n*cxF(BH8v=C3sL_bZF>Dr1X$ z*RmL&Z8&{Lu^exh9JtsioY)*lzDHRs=R{+VBMvR=Rwp^qAzFpty4*O$hVX5D8Be{xiP00kh^j<+An=nu0{z?cwH$7q+D4HN*|RQ3ra!7zi5;i)p0BWO#Jl52pyV#vEce%pH~7WIXguTZq@M- z!50cnb{;xt7K6gMYraR_(|D7P-NIjE3(u{ZUC{6^&L5;;1Y zGs-xe*9#6db zd#4JyPS3T1?-%}s60fY_hYLS$)p0j2oWf5tDI~w$CjVu@Jzr;kbpf6Mdk67*gkR&W z8vj1?`^4X~1m7jN&i79V-Y9Z3{tR%ZaQ<5OFL}0CN!I+w!Zt(U*=5652!6fbHDn;c zu~qOZ1lQ?#z2Mi{?eYI zmNR~>;2#y-XXC$2<5x2OH)Oo^jNmn|GJc22g2;AA{`xjC{z-<7tl;|tj1LR`Rlz+& zjCTwEy5L)uF#dwbrx_!Xzw<`MR}23V!96L)h27XF`2PDCUx)OfW2eTqd({2I>L0c@ z!4G_a@r>XvYxxa~L-SL|R17p#c={PfvZ$k3@I8W~IH|)gcuk*2-E00&2%cKNIQ4&Y z&u*KW&YiQUm&>8 zmY%n0`BI*LFZ@Tt7(sIOb+eo=3y#+u6~0%(qx}s5$DCh@9y_MxG_ss(k@H2tw=85_ z%lW?GyQJLec9>?FC_FpQWPa+u>8OSMm+<{}d({1NQeV~zzIPGhI-RqE@B0MfTcu## zD)_-O7+E>|p$7g8PNv zc#83tM9wl40OH?!JL7AG|C53nUt)Zr;CBHx@l|)vMV$)K>2^T)w`^nnxxzmUb}^D) za|h$ciN76!8_kT<3J5wb6@2efkGj81{Ts$V0VjVC$aq2f`(xqv^)SCwQ{!#HcljAV zL*yKFtb}KjasG!LQSb^WKl6k?DEOW&%z2uGpA4fEuax+UZ6V~1^4uM)P0s=gLVR@@bABb@qd#1 zqCJ5LPum!;0IldM+DCbzEjdu$Ll7+8*gC#YlQzvE$2zbb-6N6V1HB6zZ@z23k0vQm4|hL z?|P8syfuv-i~*qm^!ydNFk7u+Z9l9uxe z!S|lyQG7S4f6V0yZrJ!2oFeg+c(T%clI()^SgA!1mCs8qwddD|CrAgys?$> zzX|@7;D*#+UB6z}{1-95De`C6NWR$m&6R?uZe;!=3_g;A?|+i<8G_#^_`W{I9~Ajd z2)--L_&*wal-07ojgme(oQr@{I?ukXQ!(m%9~At0(TDFAIa!h8yUU}Hag!h1tZ|9g zdg1?#;1$B(BKWL19G;ZdqmUN`Zxej)PZ)ny%IA+YE_%gU;h#EJ(lgHdqk^9<_^yW; zzgF;#f>*r4_zVgE%Yq*qV|=slA2yHWZ&}Rva>3^cULoaK#2A|d-?@nSb$WgRIHmKo z-|tisH2)o1j-UB6BL4}&w~R85>ZXqE2tXOFj;di?VB-(k-yX(~l?TVyarixVGQL>w z<-ko?&FuE%9)+K1ye{pDup0v+XN#NV==SyoE&t<;KOqr&O3A4*7TWaTKWP5Tng5gJ z?8B*Ops1Z}%rU-?VdEUZ4@iA~Tky|nT-r&U&ie%4Dd~2ugy+|S@41=fuMs&_XrRd7 zeItzjQSdDqf0A)6|7yVxikws#J9tp=UE|EJ^YJ;s_e*(LDDvME+?Qqk7X)tw1BK_H zqyyO05f!{*u}9sz88-ew@GW~7|BB$>7W}|Q#;+IrIl+A%#$OV=ViEgWA?@Cn;H`r1 ze4>~?Ecg~%`M*N&T|Z!cE$1(SAGGDyY!pb<{@B|26~HMS_9s}*;S!#x;QJaF?-%?t zN=}ur$yVMT5dK}Z`uKw2d!#&{A#zSRjr~2)&hk;M)X^#U!3!8)F6AmCxW|?bpA~#x zhWRgJF~+w9uaS6tN$}SMZ|q?HX@XBVox`*DR>r?BxLfd@D;fW`;C{gmu4epl!9Okd zfhQT)>G=?FtZyxuhk8c%_ei|Zy{e;Z35Unn=27>X7&cB5+|$MQn554Z!D}R5Glc&d z!4Evg{Pzg|yMpgr$oL%LKc!yE!&eyB{m3f84=iW=FyY@O_`XGqV;HWE-Gc8GIVTDJ zEiGU2SL4qKZk+E?oV%pG!cJYPd>&Z9_-v8m6+D$L2UY1oucf=yZEZ@Lf`FHUCkK9G=D|mh+6raS86T$=RU!C4IE~ao`lr=WP1q z?ZUrB%8%{`e+Hb&kA2?fx5B^wMh?#_5}w5_4rh(ji_Z%_Ao%`&W&RJQ@PnM-#!HOP zEMt5l8bE3v?DcdUxM`V()#dye;jg%X3hsH4 z@$U%!IB*)@RoL3?-wS`m%gq0d@c*opYB9oYs}n@p-{_4SDD` zKVSK%;CsK!_%`(v>wX2Vko-DB@Tv|9C+2OX-_+%&L*XYHdnNoD{}^z}m%UQn>O{`v zg71HX{e4yNdo=zr#2!>Z7hl|1NmNPUhF+pgGIL-yz2TCh7la!S^m^`~<-F^mv&jFrFGp@_qWrFYD$he3xt_FTA_)?Ek;?wyu9qC5#-BQaqx?^=LQv7mbIel^h{0`v9p#JLhHWd=z z?@Yk|s=_fY*x^yqkwfYzM|dcI?fLk`>4cwT?31r%3cFFE!msZN=LJg6NhRf^X#)OD zz$>xtLLa)F$tiw>^EHop6c&cdf!D~j_4LpL@?V+&e^=!1ihGn8UGHY%R^`ht8K0`2 zVqLw$<;HSaJ^}8V0H9*~6c{fjOtPPZZI?!D8JEfCB9ZzamRw?6I_$z1#+D#)Klb2B zVAU!%p-Soxx`yzj*o;4r+pcy+iDB=dP<^8_2lg0DM6uUhIxvo%3$y8QY{!GmbNr!P zJdQ0(u+Lxq4%;a-5y4)L7 zr2AB!wDo2>V^Qo56ZN)j^H7Q4HK2np2X~PCn z(R9*5R0lj8Km?OHk(w|(3%7V}h`GQd=|EzIM2IGNLhBohtCleDz zx-l3Cj)c`_5KbX*smIt|G@T6kGvQdoPcprhG({neG4alQ}eN+q$0B$>dg!T$8nC z`U64i+Lne-=|G0I%EitXURQH8VFgN)#NEUtZXKdQ37t!aQ3{cc-Z;_+$rBy&x?0j< z?7d2#14qH3O?nF@O6}l=_4(-u^4aZHEfey_uUNTpiszh?p(!tnHYmcLrGD(inM{v6 z@gicJ!y%21_bCPt}Lyl^N7-RdfIJz(gADS8+e4sWp3RgQE3u;p{7lB@h zNhfW}Mq{qTUpcR@XEYuk^2Os` zY?!IG4zqP71L!?_(#d!aaYxZ!`{MYdfL*fmZB&9(N9gCil*Ic+Npy(|m+KtbI&VW# z1h1Vyva4f2l#4Fa9QM%O!(Lzipx@O<*STWdX^}3pnrYorh6xxP)&Q5vsCw+wBhH|lLs$xW?tX~5h2lEdrJKtfqrpWwdInXynE(bUFJiuJa1C8es7 zO5aM=LieMAR^i8fc)Z75am+1+!R=DMQ^>o+nP57aqCU#qm$~gms7P_ z?FYmvBm(YsLj)2c)Ds4-?dEu=mDH~}2KzsUHYfy`-6QzxnyKOL> z?MsgJQOhj#rl1d~=A+b6ODFAB>KNsG(2)1k(@qq$CTSi9$FY&>uya9b(XAn+4yquj zlhiV}+eusQiecNwd`<78H@j2;;yPc-(d4El&7Hm`x0jC6VZo*-ELC49a?A<0{^Q1v;E%H(onDN9w>253W4-jsdO+K^G1=&4%yt4XQTZ}DTzuO zW*4du={BmB<+OHczMFMQQVcg@kLqN)KiP$UY^B+zQ`aE~g{mCq9l4POXaP$(-Gwd> zJ9Fb(0prndEaX%|tc|$Kg~Hbzjs$YCtYiJ9p#-;1Tu0ZDKJSnUPVHj1)b^svPSv$D zJv{0ZvO={&!Nqps6QnpgtU#y_8;PTjC54e%F6TC@4gD4L&u}PTRz6(WJaiEsZ1Q`( zU~~Ol`aG|WCo z9s(A3Qxxykl2YMRp<4#C=p9gKam7FrVN+jpD2)LMg{~Klbwgf~0_~Qh?B!RX9a^wvHH3(64~L}n zDy^yLlvangOIKtaytvvRH%(j0Z=gXHN%EFDcNKT3GMYo{yA^t^Lm%i=Gm*=sBX?Kp zI*h=wXq)u$zA*{SSE7+*iZ z2QXl?2*Mx(ZOvhT>27l5RjmF{Cg~qhs#S>}E~xuf&Bw9*Xliuo#Qw`2T}wA!HAeT* zKiKSV_l47{-$cD`avBd58hmO4@lA(9k+fCGBF+SCO2p|Wh}9kE_szg>osk*NFw10-3d_zO*Ri zYk~}G?ZGzGq_=KJvT9CzlZ6bbfpnLnQHRJ|dW!aF#;4qs*x`D08p7H%R8zd&NYPXew~AT0}jdSMq%P9 z0qKjVclvJ*+gp(ER46wjIVDuamj>GH?!tG0&?+TUBN&*|M*NeNVoRyh!@eR#&^k79 zxiCP>g!#Ki6x&dYzOF(B7&VIkLx4XO4VR>&yHGo^^KL*5-n4NW6?`phBPDKJ=-@yh`5RUSM22;0ilh)OCHZ}}74)u#7pP0nv@%Pc#E&4ijE6w>rKxQmwMXJyz zMNs)N7*IR)yFA&Y?0)$Yo=Czrg0UmaauXHu_I$aDV1E}%4@fVq)0UBNjK03%jgFW0 zZHMf0^U)3K#@jIsN~)r}5tRm?KpW4emKr0J@VSaIcjA%Z|B}82YaMa~qmK`xu#v@g zgQJE6G1T2t(Vnyhgkc$^Z%d%JUF!=%M=Xthq5j8dP=GEa8jY$COcXV#wt2r&Ic`#V zNf$(mFP%jz-40^e++$&~a~Pwy&QZ+W&?oR52QKb`T%rfx=HaO$Co{6U zS?i<}#v&^XrpHqF&JDI)g0?fT)*&4u1Dm)n8mJ8#fl^L4b;4T4Utdi2;YKK3R+N&@%or?u9Wic-Oq`gdZU}zk}j`_Ua zfCkEF(@F(4Lr~mYSv6ZuNEGr$tG7Tilo?wRnkZ`a?=z* zIK)bYL#T>9jZ=p=3d@E=i`+!1(L)x5Uf4oVl1nrF&<%2{FPTDWX2VqAN#Ei58+*4z zL!d)8n#gZ2Id}U}bhX*H7hhO&Fiy0uN2jlgis}UDhE;22I&`p&qW1{VT&vYOFzS$m zMV$bB{t)E}1=1l2|1LH;S7SFD!Kv7(v13VUI_P(8XQ%Kr&G6*o@Am#cBDsM^(+(1B zlOwI&xj0R)Y4soF&%seaw?H+)4r__6s(*1xtmd?8n$)*P9p_(NZe`}_4hPX!qgOOalnj`b2Epv7s)mE6NP4#T?w^)C~$Ff&^$pqxlSE*(5Yb$ z%i(Jr(Jbb|s7b|;Z6kf~cEY?VYE@h_Hhs*(!kCeM$)R0Fg6zL z0KE}Ij0g!U)ov%r!12lQ3s%`&VqJhH_VQYqL;K!ln=VbJ3&Sr5b{?8@qOODb?2z|) z#g956%yY*77tN6+)ze}tj3m>J#zCbLu>cjdrbP zClE{adGcl~?$C_63Jr8Fq5Bqx(B+4qXlg@Yj4xRWnV=ai9d{NFDV%MGR>d0gsANRx zjr50U_5$Ndr>u5C^&P@Mm4;nT&x`6-i~97X6B|4uh4(|~EiP!dK3QPuB+1%1x>Q%I z)n$iz>UQOaPwNvsu*b!eA#Q?M@+K5_veD6)h&wZF;ll{BbPVHeu{M{*Lj*KK#p{99 zhZ2iME$(JAT;~U2mZ2Hy6P7hO8IN2%Lr5bbUOGEbAL3SP1F+DRK6tK%kHzt)#Xcov z&`smWb%E_vNj65)*<2u|+sM*J;E;+i+U7%Q-dL|xq$koOk7LJ~uNeJ-rx`k$nWeNk zwC$~lR*2a8+wi(*Le)gI{1QE`wPk>x_^NTqlt_`mnY0{-1q74W*Nc_Dyt?Gz4+i!4 zM6Vxf_>)v$9Q1+zyQ@OTj-(V6H3p?GqhfJsX&Mww=kh8X416N68Poe1sdSj;JW8Co zUA_4gvetE;YOHHrG*nuDP~W9;u=2K<-cUh3DJ{Uo)g+ohZmCxaRNLw}JadrIiXzGC zXX(2FytKd}h}LelF-FU1(+Qb*a7aQ-3w91=k}-_bCbrTQTFQ8imbOyMP?D^cCKpQ( zc~MI#lWmlbwfxa6jKQguqORHo05*17z^Gbd8d5sw80|`}pj9W%qxZsW0d+JZX;|W@ z?vy5d6RpT|=vJ)7qrD3sKPIam?4*ueeo-5S@sqCyO%$zRj)HvjhhDQZiJ&Rair~Ri zG@%xgVmWMZ>mZhfI|S&E{j{s4V9i;{V^?aF>?R!=29VtgA1_X1@OBBaB5adu%}6^Z zz4`xc!=n_b&LAmJF+E#@o}1>Z9JHH5r+!l>FWwAKlJ?Z@98xD!#>vu3=WfkgQJr+f z(!ynJ9b6I8tNpBTIH{GzM)x6Ya#yVKg5Ua{oCgeY-#Sfn)P^T!l7^5pni32LoykgVA`G6IXi*3iIT$!)SwVA-6-|3xR}L@ika<&I9H2W zX4jwWh9-=nqP}Tg+I-vA4noCr@U>{hIf98$m8BDR&?RwnS&XMViAH6cs`DgvAvBnd z%Dq!jbhVKYyl5GR8dppr-k}S8pTLUb*0qpkUC=P9DF1zy%Dd?$ z35;w@N3|9cw~TpILxwNdt7gWKS4W_<55xRj^y)1ZdX&c7`E5ZsFPPF{dPIYXw*XcB z@ngj$ULy{N{Uh{}o|8v1MhIhSB%r>ytv(w=H3n7%3?{H7hF|ZsP4^jbm^lqS1sKR? z(-aBy#xSj)@OW1B^{(vlyX)QcEh>as=T!=?c8B+l@j4()9~L{Hw_@@6oMO-+nXovu zG@05UurNDG!*D79O8@Z(w+H<2ZF@9(NZCWlEI#uC@q_f4dOtqm1GyN`BrpKZ_6C8v zEMKp|%LCp4U`_ZE5SB;@cQ5*#M!$Ek)$dyiO)4gyZrbE;s&B6EC{9008C$5}cQf8_ z)G)g%c7;?|g9+zUr(p!WL+$V~CUS)`onK-zASNA)#!EurAHr*(Qb;!U4`$o-*N)K7 zMYFV=tSC-JSzTJ9@hzg?)G)O)>l`PR)mkTC4=JORmUzKV7avvZLKsY?ljF9O z^JiljRjn{nlP)}KqR-LuDleEq`CUqcIUg)~B|k47t!*ZSxwc3&Sdc*FITXu`$BQA6 zp;8L9FPfO>F@}9uj8*(J6dQFAIE*)&qnYbuu&fxPe2}@(a5PMSj<8%^A_Fs@eB(O1LQ!iQn9R2uiB4# zdOOXiSGiT6PO8SMK0G2@CX9sOR^J)*SrlQTUdGzIi2{q!*Ca+?lPK~RQdJlO_|O-^ zm4t8jt5-o_@03*1HLw-|tl^>Dus@X>O5p7Uc*plq%+2fTz|c@SJgV<#x=LRoHT5Ot z0`z4(5VSgnX#Pf;h=wD)ksP5is$HZL!!epx()UF{ArEP!o!|+gla6uPOJaM>XZlQNySF zzuo<6JfXcqwErG)?-BP~B*4=|g5I}9%jpLGmk&NjYWI7lcogRzVR&8K+1(4QzL`vW zvS{~LO!cToSICAY*NYrVBMOT4f41V{Z!A+#wR`;?vKraYE2jf0{1P3x!?$d4^?@b) z`g>)cJBnF`gj0uK`=ifW@%;Z;-0Sa}y(8}TiF*n^MM;NWU}Fa^D2Q5~{{GoFWy7lN z!l?b%?sfbx6Zb2HPk$$^Q8xU!-jaVOfXD9sAAu2zmT%N}aEGHt{bQ$~;=`7l#+7(% zbzdXyYiihC4L!6RdLJTv-i>Eg_xd|mo?3QP_lU(YF10(2-iQmUd;J}^kzX>$k(yD? z_VDikPVRO3>wT<@gY4i151;kF-T%As!0KLq7w&~dLJi|Wo#5)OwEjK--0EI`KW+`d4OGRC~ z*ZVrI7XR((rQPZC%Wz9YUAx!cx7#G{H6K{iq3`wiO`sH0?OuNeZ;SSylYt%M-yWX- z1V&|FyVv_0r{e5T@7GK9mk#Z(mQxNktN;4DdIys1zDBt!{Au_3v(0^eAHfv6-&1g^ zuJY~#KgQ->@9VWk+^?=F7NFg0v|a2!wA9%%O(rhV=07(JW$8AgXs)|`B{^L9?)K64*)4%iwD zyZiMMxPSEP%(>a-z;+{#}=xbmc!0_`vmSE`!RFY zTHMm5-92TK9V5Qi#r=We;$NbF?GyL*{CoU)mfDi9SR}RJm-ds+`MyVS$lpuMF|v^F wPs8bAK)U|w{-1(p^FlcoIgF()?qv7+pQY+M+EdWk{byFQ`~5Ztwp-)>1Nx1%7XSbN literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.c.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..1916dc48a47187de274c91b993d3f520c784df0c GIT binary patch literal 133648 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 z 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 literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.cpp.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..ee8a96de84a9654b3b4eec648e19601b7c90d1b8 GIT binary patch literal 149472 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 V>AX=l`vT34*C>Sb%+dtO_*InsO#+p) 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 Z9D+R|uLB|P%RY3OFi`Jbr1=T<{|j4HOz8js literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs b/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs index fdf933eb4..ecd9b33d0 100644 --- a/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs +++ b/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs @@ -1416,6 +1416,23 @@ public void BA3030_UseCheckedFunctionsWithGCC_NotApplicable() this.VerifyApplicability(new UseCheckedFunctionsWithGcc(), new HashSet()); } + [Fact] + public void BA3031_EnableSafeStackWithClang_Pass() + { + this.VerifyPass(new EnableSafeStackWithClang(), bypassExtensionValidation: true); + } + + [Fact] + public void BA3031_EnableSafeStackWithClang_Fail() + { + this.VerifyFail(new EnableSafeStackWithClang(), bypassExtensionValidation: true); + } + + [Fact] + public void BA3031_EnableSafeStackWithClang_NotApplicable() + { + this.VerifyApplicability(new EnableSafeStackWithClang(), new HashSet()); + } [Fact] public void BA5001_EnablePositionIndependentExecutableMachO_Pass() { From 4bb866a8bea0f3dc6d18d660c0341158ba60a0cb Mon Sep 17 00:00:00 2001 From: Shaopeng Li Date: Wed, 6 Jul 2022 23:10:09 -0700 Subject: [PATCH 2/6] Fix spacing. --- src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs b/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs index ecd9b33d0..57624d5db 100644 --- a/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs +++ b/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs @@ -1433,6 +1433,7 @@ public void BA3031_EnableSafeStackWithClang_NotApplicable() { this.VerifyApplicability(new EnableSafeStackWithClang(), new HashSet()); } + [Fact] public void BA5001_EnablePositionIndependentExecutableMachO_Pass() { From a76da093dc77de99dc8948f39e399e693726c163 Mon Sep 17 00:00:00 2001 From: Shaopeng Li Date: Thu, 7 Jul 2022 13:18:30 -0700 Subject: [PATCH 3/6] Add build script --- docs/FunctionalTestBuildScripts.md | 83 +++++++++++++++++------------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/docs/FunctionalTestBuildScripts.md b/docs/FunctionalTestBuildScripts.md index 8b320bbfe..1e239a6fe 100644 --- a/docs/FunctionalTestBuildScripts.md +++ b/docs/FunctionalTestBuildScripts.md @@ -4,6 +4,52 @@ This file records scripts used to compile the test files, in alphabetical order. Base scenario is a simple hello world program built with different parameters for testing purpose. Test files are located in [BaselineTestData](https://github.com/microsoft/binskim/tree/main/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData) and [FunctionalTestData](https://github.com/microsoft/binskim/tree/main/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData). +## ARM64_CETShadowStack_NotApplicable.exe + +A simple C++ hellow world program, cross compiled using CMake using the `cl.exe` compiler and `Ninja` generator. +`CMakePresets.json` should be configured with a `configurePresets` as below: + +```json +{ + "name": "arm64-release", + "displayName": "ARM64 Release", + "inherits": "windows-base", + "architecture": { + "value": "arm64", + "strategy": "external" + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } +}, +``` + +## ARM_CETShadowStack_NotApplicable.exe + +A simple C++ hellow world program, cross compiled using CMake with the `cl.exe` compiler and `Ninja` generator. +`CMakePresets.json` should be configured with a `configurePresets` as below: + +```json +{ + "name": "arm-release", + "displayName": "ARM Release", + "inherits": "windows-base", + "architecture": { + "value": "arm", + "strategy": "external" + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } +}, +``` + +## clang.[version].elf.[c,cpp].[no_]safe_stack + +A simple hello world C/C++ program, compiled with different `clang [version]` that generates a executable file. Script to reproduce: +`clang++-14 -Wall hellocpp.cpp -O2 -g -gdwarf-5 -o clang.14.elf.cpp.no_safe_stack` +`clang-7 -Wall helloc.c -O2 -g -gdwarf-5 -o clang.7.elf.c.safe_stack -fsanitize=safe-stack` + ## clang.object_file.dwarf.3.o A simple hello world program, compiled with `clang 10.0.0` that generates a .o object file. Script to reproduce: @@ -47,40 +93,3 @@ Also create two user functions `userfn_use_safebuffers_1()` and `userfn_use_safe A simple `Windows Kernel Mode Driver` program, created with `Visual Studio 2019` that generates a .exe and associated .pdb file. Code to reproduce: Use `NTSTATUS GsDriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath)` as entry point and do not decorated with `__declspec(safebuffers)`. No user functions decorated with `__declspec(safebuffers)`. - -## ARM64_CETShadowStack_NotApplicable.exe -A simple C++ hellow world program, cross compiled using CMake using the `cl.exe` compiler and `Ninja` generator. -`CMakePresets.json` should be configured with a `configurePresets` as below: -``` -{ - "name": "arm64-release", - "displayName": "ARM64 Release", - "inherits": "windows-base", - "architecture": { - "value": "arm64", - "strategy": "external" - }, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } -}, -``` - -## ARM_CETShadowStack_NotApplicable.exe - -A simple C++ hellow world program, cross compiled using CMake with the `cl.exe` compiler and `Ninja` generator. -`CMakePresets.json` should be configured with a `configurePresets` as below: -``` -{ - "name": "arm-release", - "displayName": "ARM Release", - "inherits": "windows-base", - "architecture": { - "value": "arm", - "strategy": "external" - }, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } -}, -``` \ No newline at end of file From 8cfab55712251a7a5774602356df44ad23f07387 Mon Sep 17 00:00:00 2001 From: Shaopeng Li Date: Thu, 7 Jul 2022 13:27:00 -0700 Subject: [PATCH 4/6] Adjust Order --- docs/FunctionalTestBuildScripts.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/FunctionalTestBuildScripts.md b/docs/FunctionalTestBuildScripts.md index 1e239a6fe..2049a6ff9 100644 --- a/docs/FunctionalTestBuildScripts.md +++ b/docs/FunctionalTestBuildScripts.md @@ -4,18 +4,18 @@ This file records scripts used to compile the test files, in alphabetical order. Base scenario is a simple hello world program built with different parameters for testing purpose. Test files are located in [BaselineTestData](https://github.com/microsoft/binskim/tree/main/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData) and [FunctionalTestData](https://github.com/microsoft/binskim/tree/main/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData). -## ARM64_CETShadowStack_NotApplicable.exe +## ARM_CETShadowStack_NotApplicable.exe -A simple C++ hellow world program, cross compiled using CMake using the `cl.exe` compiler and `Ninja` generator. +A simple C++ hellow world program, cross compiled using CMake with the `cl.exe` compiler and `Ninja` generator. `CMakePresets.json` should be configured with a `configurePresets` as below: ```json { - "name": "arm64-release", - "displayName": "ARM64 Release", + "name": "arm-release", + "displayName": "ARM Release", "inherits": "windows-base", "architecture": { - "value": "arm64", + "value": "arm", "strategy": "external" }, "cacheVariables": { @@ -24,18 +24,18 @@ A simple C++ hellow world program, cross compiled using CMake using the `cl.exe` }, ``` -## ARM_CETShadowStack_NotApplicable.exe +## ARM64_CETShadowStack_NotApplicable.exe -A simple C++ hellow world program, cross compiled using CMake with the `cl.exe` compiler and `Ninja` generator. +A simple C++ hellow world program, cross compiled using CMake using the `cl.exe` compiler and `Ninja` generator. `CMakePresets.json` should be configured with a `configurePresets` as below: ```json { - "name": "arm-release", - "displayName": "ARM Release", + "name": "arm64-release", + "displayName": "ARM64 Release", "inherits": "windows-base", "architecture": { - "value": "arm", + "value": "arm64", "strategy": "external" }, "cacheVariables": { From 6dcc01f120cea28e16fbdad9407a6c1ff37efef6 Mon Sep 17 00:00:00 2001 From: Shaopeng Li Date: Tue, 12 Jul 2022 00:01:14 -0700 Subject: [PATCH 5/6] Fix comments from Michael --- docs/BinSkimRules.md | 8 +- ...001.EnablePositionIndependentExecutable.cs | 2 +- .../BA3002.DoNotMarkStackAsExecutable.cs | 2 +- .../BA3010.EnableReadOnlyRelocations.cs | 2 +- .../ElfRules/BA3011.EnableBindNow.cs | 2 +- ...CC.cs => BA3030.UseGccCheckedFunctions.cs} | 8 +- ...lang.cs => BA3031.EnableClangSafeStack.cs} | 38 +++-- src/BinSkim.Rules/RuleIds.cs | 4 +- src/BinSkim.Rules/RuleResources.Designer.cs | 17 ++- src/BinSkim.Rules/RuleResources.resx | 7 +- src/BinSkim.Sdk/MetadataConditions.cs | 4 +- src/BinSkim.Sdk/SdkResources.Designer.cs | 10 +- src/BinSkim.Sdk/SdkResources.resx | 6 +- src/ReleaseHistory.md | 4 +- .../BinSkim.win-x64.ni.dll.sarif.temp2 | 133 ------------------ .../Expected/clang.default_compilation.sarif | 46 ++++++ .../Expected/clang.elf.objectivec.dwarf.sarif | 7 +- .../Expected/clang.execstack.sarif | 46 ++++++ .../Expected/clang.execstack.so.sarif | 46 ++++++ .../Expected/clang.immediate_binding.sarif | 46 ++++++ .../Expected/clang.no_immediate_binding.sarif | 46 ++++++ .../Expected/clang.no_stack_protector.sarif | 46 ++++++ .../Expected/clang.noexecstack.sarif | 46 ++++++ .../Expected/clang.noexecstack.so.sarif | 46 ++++++ .../Expected/clang.non_pie_executable.sarif | 46 ++++++ .../Expected/clang.pie_executable.sarif | 46 ++++++ .../Expected/clang.relocationsro.sarif | 46 ++++++ .../Expected/clang.relocationsrw.sarif | 46 ++++++ .../Expected/clang.shared_library.so.sarif | 46 ++++++ .../Expected/clang.stack_protector.sarif | 46 ++++++ .../Expected/clang.stack_protector.so.sarif | 46 ++++++ .../Expected/gcc.default_compilation.sarif | 4 +- ...rongsspbuffersize8+fnostackprotector.sarif | 4 +- .../Expected/gcc.execstack.sarif | 4 +- .../Expected/gcc.execstack.so.sarif | 4 +- .../Expected/gcc.fortified.sarif | 4 +- .../Expected/gcc.gsplitdwarf.5.sarif | 4 +- ...oworld.4.o.no-stack-clash-protection.sarif | 4 +- ...oworld.5.o.no-stack-clash-protection.sarif | 4 +- .../gcc.helloworld.execstack.5.o.sarif | 4 +- .../Expected/gcc.helloworld.nodwarf.sarif | 4 +- .../gcc.helloworld.noexecstack.5.o.sarif | 4 +- .../Expected/gcc.immediate_binding.sarif | 4 +- .../gcc.no_fortification_required.sarif | 4 +- .../Expected/gcc.no_immediate_binding.sarif | 4 +- .../Expected/gcc.no_stack_protector.sarif | 4 +- .../Expected/gcc.noexecstack.sarif | 4 +- .../Expected/gcc.noexecstack.so.sarif | 4 +- .../Expected/gcc.non_pie_executable.sarif | 4 +- ...gcc.objcopy.stripall.addgnudebuglink.sarif | 4 +- .../Expected/gcc.pie_executable.sarif | 4 +- .../Expected/gcc.relocationsro.sarif | 4 +- .../Expected/gcc.relocationsrw.sarif | 4 +- .../Expected/gcc.requiredsymbol.4.o.sarif | 4 +- .../Expected/gcc.requiredsymbol.5.o.sarif | 4 +- .../Expected/gcc.shared_library.so.sarif | 4 +- .../Expected/gcc.stack_protector.sarif | 4 +- .../Expected/gcc.stack_protector.so.sarif | 4 +- .../Expected/gcc.unfortified.sarif | 4 +- .../gcc.default_compilation.sarif | 4 +- ...rongsspbuffersize8+fnostackprotector.sarif | 4 +- .../NonWindowsExpected/gcc.execstack.sarif | 4 +- .../NonWindowsExpected/gcc.execstack.so.sarif | 4 +- .../NonWindowsExpected/gcc.fortified.sarif | 4 +- .../gcc.gsplitdwarf.5.sarif | 4 +- ...oworld.4.o.no-stack-clash-protection.sarif | 4 +- ...oworld.5.o.no-stack-clash-protection.sarif | 4 +- .../gcc.helloworld.execstack.5.o.sarif | 4 +- .../gcc.helloworld.nodwarf.sarif | 4 +- .../gcc.helloworld.noexecstack.5.o.sarif | 4 +- .../gcc.immediate_binding.sarif | 4 +- .../gcc.no_fortification_required.sarif | 4 +- .../gcc.no_immediate_binding.sarif | 4 +- .../gcc.no_stack_protector.sarif | 4 +- .../NonWindowsExpected/gcc.noexecstack.sarif | 4 +- .../gcc.noexecstack.so.sarif | 4 +- .../gcc.non_pie_executable.sarif | 4 +- ...gcc.objcopy.stripall.addgnudebuglink.sarif | 4 +- .../gcc.pie_executable.sarif | 4 +- .../gcc.relocationsro.sarif | 4 +- .../gcc.relocationsrw.sarif | 4 +- .../gcc.requiredsymbol.4.o.sarif | 4 +- .../gcc.requiredsymbol.5.o.sarif | 4 +- .../gcc.shared_library.so.sarif | 4 +- .../gcc.stack_protector.sarif | 4 +- .../gcc.stack_protector.so.sarif | 4 +- .../NonWindowsExpected/gcc.unfortified.sarif | 4 +- .../Fail/gcc.unfortified | Bin .../NotApplicable/clang.default_compilation | Bin .../NotApplicable/clang.shared_library.so | Bin .../NotApplicable/gcc.object_file.o | Bin .../Pass/gcc.example1.DFORTIFYSOURCE.2 | Bin .../Pass/gcc.fortified | Bin .../Pass/gcc.no_fortification_required | Bin .../Fail/clang.10.elf.c.no_safe_stack | Bin .../Fail/clang.10.elf.cpp.no_safe_stack | Bin .../Fail/clang.11.elf.c.no_safe_stack | Bin .../Fail/clang.11.elf.cpp.no_safe_stack | Bin .../Fail/clang.12.elf.c.no_safe_stack | Bin .../Fail/clang.12.elf.cpp.no_safe_stack | Bin .../Fail/clang.13.elf.c.no_safe_stack | Bin .../Fail/clang.13.elf.cpp.no_safe_stack | Bin .../Fail/clang.14.elf.c.no_safe_stack | Bin .../Fail/clang.14.elf.cpp.no_safe_stack | Bin .../Fail/clang.3_6.elf.c.no_safe_stack | Bin 0 -> 17440 bytes .../Fail/clang.3_7.elf.c.no_safe_stack | Bin 0 -> 17288 bytes .../Fail/clang.7.elf.c.no_safe_stack | Bin .../Fail/clang.7.elf.cpp.no_safe_stack | Bin .../Fail/clang.8.elf.c.no_safe_stack | Bin .../Fail/clang.8.elf.cpp.no_safe_stack | Bin .../Fail/clang.9.elf.c.no_safe_stack | Bin .../Fail/clang.9.elf.cpp.no_safe_stack | Bin .../NotApplicable/gcc.object_file.o | Bin .../Pass/clang.10.elf.c.safe_stack | Bin .../Pass/clang.10.elf.cpp.safe_stack | Bin .../Pass/clang.11.elf.c.safe_stack | Bin .../Pass/clang.11.elf.cpp.safe_stack | Bin .../Pass/clang.12.elf.c.safe_stack | Bin .../Pass/clang.12.elf.cpp.safe_stack | Bin .../Pass/clang.13.elf.c.safe_stack | Bin .../Pass/clang.13.elf.cpp.safe_stack | Bin .../Pass/clang.14.elf.c.safe_stack | Bin .../Pass/clang.14.elf.cpp.safe_stack | Bin .../Pass/clang.3_7.elf.c.safe_stack | Bin 0 -> 19936 bytes .../Pass/clang.7.elf.c.safe_stack | Bin .../Pass/clang.7.elf.cpp.safe_stack | Bin .../Pass/clang.8.elf.c.safe_stack | Bin .../Pass/clang.8.elf.cpp.safe_stack | Bin .../Pass/clang.9.elf.c.safe_stack | Bin .../Pass/clang.9.elf.cpp.safe_stack | Bin .../RuleTests.cs | 24 ++-- 131 files changed, 891 insertions(+), 301 deletions(-) rename src/BinSkim.Rules/ElfRules/{BA3030.UseCheckedFunctionsWithGCC.cs => BA3030.UseGccCheckedFunctions.cs} (97%) rename src/BinSkim.Rules/ElfRules/{BA3031.EnableSafeStackWithClang.cs => BA3031.EnableClangSafeStack.cs} (72%) delete mode 100644 src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/BinSkim.win-x64.ni.dll.sarif.temp2 rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3030.UseCheckedFunctionsWithGcc => BA3030.UseGccCheckedFunctions}/Fail/gcc.unfortified (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3030.UseCheckedFunctionsWithGcc => BA3030.UseGccCheckedFunctions}/NotApplicable/clang.default_compilation (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3030.UseCheckedFunctionsWithGcc => BA3030.UseGccCheckedFunctions}/NotApplicable/clang.shared_library.so (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3030.UseCheckedFunctionsWithGcc => BA3030.UseGccCheckedFunctions}/NotApplicable/gcc.object_file.o (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3030.UseCheckedFunctionsWithGcc => BA3030.UseGccCheckedFunctions}/Pass/gcc.example1.DFORTIFYSOURCE.2 (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3030.UseCheckedFunctionsWithGcc => BA3030.UseGccCheckedFunctions}/Pass/gcc.fortified (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3030.UseCheckedFunctionsWithGcc => BA3030.UseGccCheckedFunctions}/Pass/gcc.no_fortification_required (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.10.elf.c.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.10.elf.cpp.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.11.elf.c.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.11.elf.cpp.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.12.elf.c.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.12.elf.cpp.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.13.elf.c.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.13.elf.cpp.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.14.elf.c.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.14.elf.cpp.no_safe_stack (100%) create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.3_6.elf.c.no_safe_stack create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.3_7.elf.c.no_safe_stack rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.7.elf.c.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.7.elf.cpp.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.8.elf.c.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.8.elf.cpp.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.9.elf.c.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Fail/clang.9.elf.cpp.no_safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/NotApplicable/gcc.object_file.o (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.10.elf.c.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.10.elf.cpp.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.11.elf.c.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.11.elf.cpp.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.12.elf.c.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.12.elf.cpp.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.13.elf.c.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.13.elf.cpp.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.14.elf.c.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.14.elf.cpp.safe_stack (100%) create mode 100644 src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.3_7.elf.c.safe_stack rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.7.elf.c.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.7.elf.cpp.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.8.elf.c.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.8.elf.cpp.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.9.elf.c.safe_stack (100%) rename src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/{BA3031.EnableSafeStackWithClang => BA3031.EnableClangSafeStack}/Pass/clang.9.elf.cpp.safe_stack (100%) diff --git a/docs/BinSkimRules.md b/docs/BinSkimRules.md index c792af600..af5812c78 100644 --- a/docs/BinSkimRules.md +++ b/docs/BinSkimRules.md @@ -196,7 +196,7 @@ The BIND_NOW flag is missing from this binary, so relocation sections in '{0}' w --- -## Rule `BA3030.UseCheckedFunctionsWithGcc` +## Rule `BA3030.UseGccCheckedFunctions` ### Description @@ -226,7 +226,7 @@ No checked functions are present/used when compiling '{0}', and it was compiled --- -## Rule `BA3031.EnableSafeStackWithClang` +## Rule `BA3031.EnableClangSafeStack` ### Description @@ -242,6 +242,10 @@ The SafeStack instrumentation pass protects programs by implementing two separat '{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. +#### `ClangVersionMayNeedUpgrade`: Error + +'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it. + #### `InvalidMetadata`: NotApplicable '{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}. diff --git a/src/BinSkim.Rules/ElfRules/BA3001.EnablePositionIndependentExecutable.cs b/src/BinSkim.Rules/ElfRules/BA3001.EnablePositionIndependentExecutable.cs index 3bf9faa71..e7b69e230 100644 --- a/src/BinSkim.Rules/ElfRules/BA3001.EnablePositionIndependentExecutable.cs +++ b/src/BinSkim.Rules/ElfRules/BA3001.EnablePositionIndependentExecutable.cs @@ -43,7 +43,7 @@ public override AnalysisApplicability CanAnalyzeElf(ElfBinary target, Sarif.Prop if (elf.Type == FileType.Core || elf.Type == FileType.None || elf.Type == FileType.Relocatable) { - reasonForNotAnalyzing = reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrObject; + reasonForNotAnalyzing = reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrRelocatable; return AnalysisApplicability.NotApplicableToSpecifiedTarget; } diff --git a/src/BinSkim.Rules/ElfRules/BA3002.DoNotMarkStackAsExecutable.cs b/src/BinSkim.Rules/ElfRules/BA3002.DoNotMarkStackAsExecutable.cs index e190365b9..58e6da980 100644 --- a/src/BinSkim.Rules/ElfRules/BA3002.DoNotMarkStackAsExecutable.cs +++ b/src/BinSkim.Rules/ElfRules/BA3002.DoNotMarkStackAsExecutable.cs @@ -46,7 +46,7 @@ public override AnalysisApplicability CanAnalyzeElf(ElfBinary target, Sarif.Prop if (elf.Type == FileType.Core || elf.Type == FileType.None || elf.Type == FileType.Relocatable) { - reasonForNotAnalyzing = reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrObject; + reasonForNotAnalyzing = reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrRelocatable; return AnalysisApplicability.NotApplicableToSpecifiedTarget; } diff --git a/src/BinSkim.Rules/ElfRules/BA3010.EnableReadOnlyRelocations.cs b/src/BinSkim.Rules/ElfRules/BA3010.EnableReadOnlyRelocations.cs index 8d82b1e41..ff7176828 100644 --- a/src/BinSkim.Rules/ElfRules/BA3010.EnableReadOnlyRelocations.cs +++ b/src/BinSkim.Rules/ElfRules/BA3010.EnableReadOnlyRelocations.cs @@ -43,7 +43,7 @@ public override AnalysisApplicability CanAnalyzeElf(ElfBinary target, Sarif.Prop if (elf.Type == FileType.Core || elf.Type == FileType.None || elf.Type == FileType.Relocatable) { - reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrObject; + reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrRelocatable; return AnalysisApplicability.NotApplicableToSpecifiedTarget; } diff --git a/src/BinSkim.Rules/ElfRules/BA3011.EnableBindNow.cs b/src/BinSkim.Rules/ElfRules/BA3011.EnableBindNow.cs index affced1c6..14e5964e7 100644 --- a/src/BinSkim.Rules/ElfRules/BA3011.EnableBindNow.cs +++ b/src/BinSkim.Rules/ElfRules/BA3011.EnableBindNow.cs @@ -46,7 +46,7 @@ public override AnalysisApplicability CanAnalyzeElf(ElfBinary target, Properties if (elf.Type == FileType.Core || elf.Type == FileType.None || elf.Type == FileType.Relocatable) { - reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrObject; + reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrRelocatable; return AnalysisApplicability.NotApplicableToSpecifiedTarget; } diff --git a/src/BinSkim.Rules/ElfRules/BA3030.UseCheckedFunctionsWithGCC.cs b/src/BinSkim.Rules/ElfRules/BA3030.UseGccCheckedFunctions.cs similarity index 97% rename from src/BinSkim.Rules/ElfRules/BA3030.UseCheckedFunctionsWithGCC.cs rename to src/BinSkim.Rules/ElfRules/BA3030.UseGccCheckedFunctions.cs index 61d243f24..5069c3b15 100644 --- a/src/BinSkim.Rules/ElfRules/BA3030.UseCheckedFunctionsWithGCC.cs +++ b/src/BinSkim.Rules/ElfRules/BA3030.UseGccCheckedFunctions.cs @@ -16,7 +16,7 @@ namespace Microsoft.CodeAnalysis.IL.Rules { [Export(typeof(Skimmer)), Export(typeof(ReportingDescriptor))] - public class UseCheckedFunctionsWithGcc : ElfBinarySkimmer + public class UseGccCheckedFunctions : ElfBinarySkimmer { // This list comes from listing all of the functions available in glibc (using readelf), // then filtering to ones with a checked variant (_*_chk). @@ -102,7 +102,7 @@ public class UseCheckedFunctionsWithGcc : ElfBinarySkimmer /// /// BA3030 /// - public override string Id => RuleIds.UseCheckedFunctionsWithGcc; + public override string Id => RuleIds.UseGccCheckedFunctions; /// /// The stack protector ensures that all functions that use buffers over a certain size will @@ -110,7 +110,7 @@ public class UseCheckedFunctionsWithGcc : ElfBinarySkimmer // smashing is detected.Use '--fstack-protector-strong' (all buffers of 4 bytes or more) or // '--fstack-protector-all' (all functions) to enable this. /// - public override MultiformatMessageString FullDescription => new MultiformatMessageString { Text = RuleResources.BA3030_UseCheckedFunctionsWithGcc_Description }; + public override MultiformatMessageString FullDescription => new MultiformatMessageString { Text = RuleResources.BA3030_UseGccCheckedFunctions_Description }; protected override IEnumerable MessageResourceNames => new string[] { nameof(RuleResources.BA3030_Pass_AllFunctionsChecked), @@ -126,7 +126,7 @@ public override AnalysisApplicability CanAnalyzeElf(ElfBinary target, Sarif.Prop if (elf.Type == FileType.Core || elf.Type == FileType.None || elf.Type == FileType.Relocatable) { - reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrObject; + reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrRelocatable; return AnalysisApplicability.NotApplicableToSpecifiedTarget; } diff --git a/src/BinSkim.Rules/ElfRules/BA3031.EnableSafeStackWithClang.cs b/src/BinSkim.Rules/ElfRules/BA3031.EnableClangSafeStack.cs similarity index 72% rename from src/BinSkim.Rules/ElfRules/BA3031.EnableSafeStackWithClang.cs rename to src/BinSkim.Rules/ElfRules/BA3031.EnableClangSafeStack.cs index f298759c8..74dcf597e 100644 --- a/src/BinSkim.Rules/ElfRules/BA3031.EnableSafeStackWithClang.cs +++ b/src/BinSkim.Rules/ElfRules/BA3031.EnableClangSafeStack.cs @@ -16,7 +16,7 @@ namespace Microsoft.CodeAnalysis.IL.Rules { [Export(typeof(Skimmer)), Export(typeof(ReportingDescriptor))] - public class EnableSafeStackWithClang : ElfBinarySkimmer + public class EnableClangSafeStack : ElfBinarySkimmer { // Symbol is the same for both C and C++, despite the "cpp" or "cc" in file name. // Clang V7 - V9: "safestack.cc.o" @@ -26,18 +26,19 @@ public class EnableSafeStackWithClang : ElfBinarySkimmer /// /// BA3031 /// - public override string Id => RuleIds.EnableSafeStackWithClang; + public override string Id => RuleIds.EnableClangSafeStack; /// /// The SafeStack instrumentation pass protects programs by implementing two separate program stacks, /// one for return addresses and local variables, and the other for everything else. /// To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. /// - public override MultiformatMessageString FullDescription => new MultiformatMessageString { Text = RuleResources.BA3031_EnableSafeStackWithClang_Description }; + public override MultiformatMessageString FullDescription => new MultiformatMessageString { Text = RuleResources.BA3031_EnableClangSafeStack_Description }; protected override IEnumerable MessageResourceNames => new string[] { nameof(RuleResources.BA3031_Pass), nameof(RuleResources.BA3031_Error), + nameof(RuleResources.BA3031_Error_ClangVersionMayNeedUpgrade), nameof(RuleResources.NotApplicable_InvalidMetadata) }; @@ -47,13 +48,13 @@ public override AnalysisApplicability CanAnalyzeElf(ElfBinary target, Sarif.Prop if (elf.Type == FileType.Core || elf.Type == FileType.None || elf.Type == FileType.Relocatable) { - reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrObject; + reasonForNotAnalyzing = MetadataConditions.ElfIsCoreNoneOrRelocatable; return AnalysisApplicability.NotApplicableToSpecifiedTarget; } - if (!target.Compilers.Any(c => c.Compiler == ElfCompilerType.Clang && c.Version.Major >= 7)) + if (!target.Compilers.Any(c => c.Compiler == ElfCompilerType.Clang)) { - reasonForNotAnalyzing = MetadataConditions.ElfNotBuiltWithClangV7OrLater; + reasonForNotAnalyzing = MetadataConditions.ElfNotBuiltWithClang; return AnalysisApplicability.NotApplicableToSpecifiedTarget; } @@ -68,23 +69,36 @@ public override void Analyze(BinaryAnalyzerContext context) { IELF elf = context.ElfBinary().ELF; - IEnumerable symbols = - ElfUtility.GetAllSymbols(elf).Where(sym => sym.Type == SymbolType.File); + IEnumerable symbols = ElfUtility.GetAllSymbols(elf); - if (symbols.Any(s => symbolSafeStack.Contains(s.Name))) + foreach (ISymbolEntry symbol in symbols) { - context.Logger.Log(this, + if (symbol.Type == SymbolType.File && symbolSafeStack.Contains(symbol.Name)) + { + context.Logger.Log(this, RuleUtilities.BuildResult(ResultKind.Pass, context, null, nameof(RuleResources.BA3031_Pass), context.TargetUri.GetFileName())); + return; + } } - else + + // SafeStack was first introduced in Clang 3.7.0 + // https://releases.llvm.org/3.7.0/tools/clang/docs/SafeStack.html + if (!context.ElfBinary().Compilers.Any(c => c.Compiler == ElfCompilerType.Clang && + (c.Version.Major >= 4 || (c.Version.Major == 3 && c.Version.Minor >= 7)))) { context.Logger.Log(this, RuleUtilities.BuildResult(FailureLevel.Error, context, null, - nameof(RuleResources.BA3031_Error), + nameof(RuleResources.BA3031_Error_ClangVersionMayNeedUpgrade), context.TargetUri.GetFileName())); + return; } + + context.Logger.Log(this, + RuleUtilities.BuildResult(FailureLevel.Error, context, null, + nameof(RuleResources.BA3031_Error), + context.TargetUri.GetFileName())); } } } diff --git a/src/BinSkim.Rules/RuleIds.cs b/src/BinSkim.Rules/RuleIds.cs index c4515dd12..0458e8366 100644 --- a/src/BinSkim.Rules/RuleIds.cs +++ b/src/BinSkim.Rules/RuleIds.cs @@ -60,8 +60,8 @@ internal static class RuleIds // BA3012-3029 -- saved for future non-compiler/language specific checks. // Compiler/Language specific checks follow. - public const string UseCheckedFunctionsWithGcc = "BA3030"; - public const string EnableSafeStackWithClang = "BA3031"; + public const string UseGccCheckedFunctions = "BA3030"; + public const string EnableClangSafeStack = "BA3031"; // Reporting checks public const string ReportPortableExecutableCompilerData = "BA4001"; diff --git a/src/BinSkim.Rules/RuleResources.Designer.cs b/src/BinSkim.Rules/RuleResources.Designer.cs index 3af641b77..905e66256 100644 --- a/src/BinSkim.Rules/RuleResources.Designer.cs +++ b/src/BinSkim.Rules/RuleResources.Designer.cs @@ -1261,18 +1261,18 @@ internal static string BA3030_Pass_SomeFunctionsChecked { /// /// Looks up a localized string similar to GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2').. /// - internal static string BA3030_UseCheckedFunctionsWithGcc_Description { + internal static string BA3030_UseGccCheckedFunctions_Description { get { - return ResourceManager.GetString("BA3030_UseCheckedFunctionsWithGcc_Description", resourceCulture); + return ResourceManager.GetString("BA3030_UseGccCheckedFunctions_Description", resourceCulture); } } /// /// Looks up a localized string similar to The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines.. /// - internal static string BA3031_EnableSafeStackWithClang_Description { + internal static string BA3031_EnableClangSafeStack_Description { get { - return ResourceManager.GetString("BA3031_EnableSafeStackWithClang_Description", resourceCulture); + return ResourceManager.GetString("BA3031_EnableClangSafeStack_Description", resourceCulture); } } @@ -1285,6 +1285,15 @@ internal static string BA3031_Error { } } + /// + /// Looks up a localized string similar to '{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it.. + /// + internal static string BA3031_Error_ClangVersionMayNeedUpgrade { + get { + return ResourceManager.GetString("BA3031_Error_ClangVersionMayNeedUpgrade", resourceCulture); + } + } + /// /// Looks up a localized string similar to '{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows.. /// diff --git a/src/BinSkim.Rules/RuleResources.resx b/src/BinSkim.Rules/RuleResources.resx index 8758beb81..3d21e89e3 100644 --- a/src/BinSkim.Rules/RuleResources.resx +++ b/src/BinSkim.Rules/RuleResources.resx @@ -454,7 +454,7 @@ Modules did not meet the criteria: {1} Some checked functions were found in '{0}'; however, there were also some unchecked functions, which can occur when the compiler cannot statically determine the length of a buffer/string. We recommend reviewing your usage of functions like memcpy or strcpy. - + GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2'). @@ -573,7 +573,7 @@ Modules did not meet the criteria: {1} '{0}' was not evaluated because its PDB could not be loaded ({1}). - + The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. @@ -582,4 +582,7 @@ Modules did not meet the criteria: {1} '{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows. + + '{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it. + \ No newline at end of file diff --git a/src/BinSkim.Sdk/MetadataConditions.cs b/src/BinSkim.Sdk/MetadataConditions.cs index d921e0ac3..7267da299 100644 --- a/src/BinSkim.Sdk/MetadataConditions.cs +++ b/src/BinSkim.Sdk/MetadataConditions.cs @@ -18,11 +18,12 @@ public static class MetadataConditions public static readonly string ImageIsBootBinary = SdkResources.MetadataCondition_ImageIsBootBinary; public static readonly string ImageIs64BitBinary = SdkResources.MetadataCondition_ImageIs64BitBinary; public static readonly string ElfNotBuiltWithGcc = SdkResources.MetadataCondition_ElfNotBuiltWithGCC; + public static readonly string ElfNotBuiltWithClang = SdkResources.MetadataCondition_ElfNotBuiltWithClang; public static readonly string ElfNotContainSegment = SdkResources.MetadataCondition_ElfNotContainSegment; public static readonly string ImageIsILOnlyAssembly = SdkResources.MetadataCondition_ImageIsILOnlyAssembly; public static readonly string ImageIsNot32BitBinary = SdkResources.MetadataCondition_ImageIsNot32BitBinary; public static readonly string ImageIsNot64BitBinary = SdkResources.MetadataCondition_ImageIsNot64BitBinary; - public static readonly string ElfIsCoreNoneOrObject = SdkResources.MetadataCondition_ElfIsCoreNoneOrObject; + public static readonly string ElfIsCoreNoneOrRelocatable = SdkResources.MetadataCondition_ElfIsCoreNoneOrRelocatable; public static readonly string ImageIsArm64BitBinary = SdkResources.MetadataCondition_ImageIsArm64BitBinary; public static readonly string ImageIsInteropAssembly = SdkResources.MetadataCondition_ImageIsInteropAssembly; public static readonly string ImageIsMixedModeBinary = SdkResources.MetadataCondition_ImageIsMixedModeBinary; @@ -33,7 +34,6 @@ public static class MetadataConditions public static readonly string ImageIsResourceOnlyAssembly = SdkResources.MetadataCondition_ImageIsResourceOnlyAssembly; public static readonly string ElfNotBuiltWithGccV8OrLater = SdkResources.MetadataCondition_ElfNotBuiltWithGccV8OrLater; public static readonly string ImageIsKernelModeAndNot64Bit = SdkResources.MetadataCondition_ImageIsKernelModeAndNot64Bit; - public static readonly string ElfNotBuiltWithClangV7OrLater = SdkResources.MetadataCondition_ElfNotBuiltWithClangV7OrLater; public static readonly string ImageIsDotNetCoreBootstrapExe = SdkResources.MetadataCondition_ImageIsDotNetCoreBootstrapExe; public static readonly string ImageLikelyLoadsAs32BitProcess = SdkResources.MetadataCondition_ImageLikelyLoads32BitProcess; public static readonly string ElfNotBuiltWithDwarfDebugging = SdkResources.MetadataCondition_ElfNotBuiltWithDwarfDebugging; diff --git a/src/BinSkim.Sdk/SdkResources.Designer.cs b/src/BinSkim.Sdk/SdkResources.Designer.cs index b15f50ad3..0a5cbf6ec 100644 --- a/src/BinSkim.Sdk/SdkResources.Designer.cs +++ b/src/BinSkim.Sdk/SdkResources.Designer.cs @@ -90,18 +90,18 @@ internal static string MetadataCondition_CouldNotLoadPdb { /// /// Looks up a localized string similar to ELF is not a shared object or executable. /// - internal static string MetadataCondition_ElfIsCoreNoneOrObject { + internal static string MetadataCondition_ElfIsCoreNoneOrRelocatable { get { - return ResourceManager.GetString("MetadataCondition_ElfIsCoreNoneOrObject", resourceCulture); + return ResourceManager.GetString("MetadataCondition_ElfIsCoreNoneOrRelocatable", resourceCulture); } } /// - /// Looks up a localized string similar to not compiled with Clang v7 or later. + /// Looks up a localized string similar to not compiled with Clang. /// - internal static string MetadataCondition_ElfNotBuiltWithClangV7OrLater { + internal static string MetadataCondition_ElfNotBuiltWithClang { get { - return ResourceManager.GetString("MetadataCondition_ElfNotBuiltWithClangV7OrLater", resourceCulture); + return ResourceManager.GetString("MetadataCondition_ElfNotBuiltWithClang", resourceCulture); } } diff --git a/src/BinSkim.Sdk/SdkResources.resx b/src/BinSkim.Sdk/SdkResources.resx index de1e71bfb..96d24c6c2 100644 --- a/src/BinSkim.Sdk/SdkResources.resx +++ b/src/BinSkim.Sdk/SdkResources.resx @@ -186,7 +186,7 @@ An attempt to cast a binary target to a '{0}' failed. This indicates a programming error in rules evaluating that sort of target. - + ELF is not a shared object or executable @@ -246,7 +246,7 @@ image is an ARM binary - - not compiled with Clang v7 or later + + not compiled with Clang \ No newline at end of file diff --git a/src/ReleaseHistory.md b/src/ReleaseHistory.md index 87bb1eec5..bd48cbc70 100644 --- a/src/ReleaseHistory.md +++ b/src/ReleaseHistory.md @@ -2,7 +2,7 @@ ## Unreleased -* FEATURE: Add BA3031.EnableSafeStackWithClang. [#663](https://github.com/microsoft/binskim/pull/663) +* FEATURE: Add BA3031.EnableClangSafeStack, rename BA3030.UseCheckedFunctionsWithGcc to BA3030.UseGccCheckedFunctions [#663](https://github.com/microsoft/binskim/pull/663) ## **v1.9.5** [NuGet Package](https://www.nuget.org/packages/Microsoft.CodeAnalysis.BinSkim/1.9.5) @@ -152,7 +152,7 @@ * Cross platform (Windows/Linux) support. * Possibly Breaking:** New Results: Identify and fire configuration errors when located PDBs are stripped * Possibly Breaking:** New Results: False negative removed for BA2015.EnableHighEntropyVA: Correctly flags an AnyCPU binary with HighEntropyVA and Prefer32Bit disabled -* Possibly Breaking:** New Rules: New rules for ELF Binaries (BA3001.EnablePieOnExecutables, BA3002.DoNotMarkStackAsExecutable, BA3003.EnableStackProtector, BA3010.EnableReadOnlyRelocations, and BA3030.UseCheckedFunctionsWithGcc) +* Possibly Breaking:** New Rules: New rules for ELF Binaries (BA3001.EnablePieOnExecutables, BA3002.DoNotMarkStackAsExecutable, BA3003.EnableStackProtector, BA3010.EnableReadOnlyRelocations, and BA3030.UseGccCheckedFunctions) * Possibly Breaking:** New Rules: Provide preliminary BA2024.EnableSpectreMitigations analysis ## **v1.4.5** [NuGet Package](https://www.nuget.org/packages/Microsoft.CodeAnalysis.BinSkim/1.4.5) diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/BinSkim.win-x64.ni.dll.sarif.temp2 b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/BinSkim.win-x64.ni.dll.sarif.temp2 deleted file mode 100644 index d45de7e2b..000000000 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/BinSkim.win-x64.ni.dll.sarif.temp2 +++ /dev/null @@ -1,133 +0,0 @@ -{ - "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.4.json", - "version": "2.1.0", - "runs": [ - { - "results": [ - { - "ruleId": "BA3001", - "ruleIndex": 0, - "kind": "notApplicable", - "level": "none", - "message": { - "id": "NotApplicable_InvalidMetadata", - "arguments": [ - "BinSkim.win-x64.ni.dll", - "EnablePositionIndependentExecutable", - "image is not an ELF binary" - ] - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "file:///E:/src/binskim/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/BinSkim.win-x64.ni.dll", - "index": 0 - } - } - } - ] - }, - { - "ruleId": "BA3002", - "ruleIndex": 1, - "kind": "notApplicable", - "level": "none", - "message": { - "id": "NotApplicable_InvalidMetadata", - "arguments": [ - "BinSkim.win-x64.ni.dll", - "DoNotMarkStackAsExecutable", - "image is not an ELF binary" - ] - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "file:///E:/src/binskim/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/BinSkim.win-x64.ni.dll", - "index": 0 - } - } - } - ] - }, - { - "ruleId": "BA3003", - "ruleIndex": 2, - "kind": "notApplicable", - "level": "none", - "message": { - "id": "NotApplicable_InvalidMetadata", - "arguments": [ - "BinSkim.win-x64.ni.dll", - "EnableStackProtector", - "image is not an ELF binary" - ] - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "file:///E:/src/binskim/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/BinSkim.win-x64.ni.dll", - "index": 0 - } - } - } - ] - }, - { - "ruleId": "BA3010", - "ruleIndex": 3, - "kind": "notApplicable", - "level": "none", - "message": { - "id": "NotApplicable_InvalidMetadata", - "arguments": [ - "BinSkim.win-x64.ni.dll", - "EnableReadOnlyRelocations", - "image is not an ELF binary" - ] - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "file:///E:/src/binskim/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/BinSkim.win-x64.ni.dll", - "index": 0 - } - } - } - ] - }, - { - "ruleId": "BA3030", - "ruleIndex": 4, - "kind": "notApplicable", - "level": "none", - "message": { - "id": "NotApplicable_InvalidMetadata", - "arguments": [ - "BinSkim.win-x64.ni.dll", - "UseCheckedFunctionsWithGcc", - "image is not an ELF binary" - ] - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "file:///E:/src/binskim/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/BinSkim.win-x64.ni.dll", - "index": 0 - } - } - } - ] - }, - { - "ruleId": "BA2008", - "ruleIndex": 5, - "kind": "notApplicable", - "level": "none", - "message": { - "id": "N \ No newline at end of file diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.default_compilation.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.default_compilation.sarif index 5f6f4d2d9..0aefe853b 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.default_compilation.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.default_compilation.sarif @@ -111,6 +111,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.default_compilation" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.default_compilation", + "index": 0 + } + } + } + ] } ], "tool": { @@ -233,6 +254,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.elf.objectivec.dwarf.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.elf.objectivec.dwarf.sarif index 5a65271ef..184270418 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.elf.objectivec.dwarf.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.elf.objectivec.dwarf.sarif @@ -301,7 +301,7 @@ }, { "id": "BA3031", - "name": "EnableSafeStackWithClang", + "name": "EnableClangSafeStack", "fullDescription": { "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." }, @@ -315,11 +315,14 @@ "Error": { "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, "NotApplicable_InvalidMetadata": { "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableSafeStackWithClang" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.execstack.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.execstack.sarif index 515a50eaa..69f71bdb2 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.execstack.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.execstack.sarif @@ -109,6 +109,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.execstack" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.execstack", + "index": 0 + } + } + } + ] } ], "tool": { @@ -231,6 +252,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.execstack.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.execstack.so.sarif index 252c06e8c..fecae2044 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.execstack.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.execstack.so.sarif @@ -110,6 +110,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.execstack.so" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.execstack.so", + "index": 0 + } + } + } + ] } ], "tool": { @@ -232,6 +253,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.immediate_binding.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.immediate_binding.sarif index 00928d575..8568075e6 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.immediate_binding.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.immediate_binding.sarif @@ -112,6 +112,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.immediate_binding" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.immediate_binding", + "index": 0 + } + } + } + ] } ], "tool": { @@ -234,6 +255,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.no_immediate_binding.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.no_immediate_binding.sarif index 40279c47a..53a755714 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.no_immediate_binding.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.no_immediate_binding.sarif @@ -111,6 +111,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.no_immediate_binding" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.no_immediate_binding", + "index": 0 + } + } + } + ] } ], "tool": { @@ -233,6 +254,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.no_stack_protector.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.no_stack_protector.sarif index 9936b9713..04694f9b3 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.no_stack_protector.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.no_stack_protector.sarif @@ -111,6 +111,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.no_stack_protector" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.no_stack_protector", + "index": 0 + } + } + } + ] } ], "tool": { @@ -233,6 +254,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.noexecstack.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.noexecstack.sarif index f3b0dc820..d7aac3d85 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.noexecstack.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.noexecstack.sarif @@ -111,6 +111,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.noexecstack" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.noexecstack", + "index": 0 + } + } + } + ] } ], "tool": { @@ -233,6 +254,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.noexecstack.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.noexecstack.so.sarif index 3e5259e14..d0d4fb3ee 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.noexecstack.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.noexecstack.so.sarif @@ -112,6 +112,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.noexecstack.so" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.noexecstack.so", + "index": 0 + } + } + } + ] } ], "tool": { @@ -234,6 +255,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.non_pie_executable.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.non_pie_executable.sarif index b47e42fc3..0b94d1acd 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.non_pie_executable.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.non_pie_executable.sarif @@ -111,6 +111,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.non_pie_executable" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.non_pie_executable", + "index": 0 + } + } + } + ] } ], "tool": { @@ -233,6 +254,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.pie_executable.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.pie_executable.sarif index 75a0387a8..025a48d2a 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.pie_executable.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.pie_executable.sarif @@ -112,6 +112,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.pie_executable" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.pie_executable", + "index": 0 + } + } + } + ] } ], "tool": { @@ -234,6 +255,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.relocationsro.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.relocationsro.sarif index 32dcba005..a2722269a 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.relocationsro.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.relocationsro.sarif @@ -111,6 +111,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.relocationsro" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.relocationsro", + "index": 0 + } + } + } + ] } ], "tool": { @@ -233,6 +254,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.relocationsrw.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.relocationsrw.sarif index a964775cf..a51d5784e 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.relocationsrw.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.relocationsrw.sarif @@ -110,6 +110,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.relocationsrw" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.relocationsrw", + "index": 0 + } + } + } + ] } ], "tool": { @@ -232,6 +253,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.shared_library.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.shared_library.so.sarif index 596bcb833..7482a95aa 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.shared_library.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.shared_library.so.sarif @@ -112,6 +112,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.shared_library.so" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.shared_library.so", + "index": 0 + } + } + } + ] } ], "tool": { @@ -234,6 +255,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.stack_protector.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.stack_protector.sarif index 1219a949e..f0b733239 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.stack_protector.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.stack_protector.sarif @@ -111,6 +111,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.stack_protector" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.stack_protector", + "index": 0 + } + } + } + ] } ], "tool": { @@ -233,6 +254,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.stack_protector.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.stack_protector.so.sarif index a21bee9cf..d76da6b49 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.stack_protector.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/clang.stack_protector.so.sarif @@ -112,6 +112,27 @@ } } ] + }, + { + "ruleId": "BA3031", + "ruleIndex": 5, + "level": "error", + "message": { + "id": "Error", + "arguments": [ + "clang.stack_protector.so" + ] + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///Z:/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/clang.stack_protector.so", + "index": 0 + } + } + } + ] } ], "tool": { @@ -234,6 +255,31 @@ } }, "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3011EnableBindNow" + }, + { + "id": "BA3031", + "name": "EnableClangSafeStack", + "fullDescription": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "help": { + "text": "The SafeStack instrumentation pass protects programs by implementing two separate program stacks, one for return addresses and local variables, and the other for everything else. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "messageStrings": { + "Pass": { + "text": "'{0}' was compiled using Clang and with the SafeStack instrumentation pass, which mitigates the risk of stack-based buffer overflows." + }, + "Error": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines." + }, + "Error_ClangVersionMayNeedUpgrade": { + "text": "'{0}' was compiled using Clang but without the SafeStack instrumentation pass, which should be used to mitigate the risk of stack-based buffer overflows. To enable SafeStack, pass '-fsanitize=safe-stack' flag to both compile and link command lines. You might need to update your version of Clang to enable it." + }, + "NotApplicable_InvalidMetadata": { + "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." + } + }, + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3031EnableClangSafeStack" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.default_compilation.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.default_compilation.sarif index 37020bed1..8062abc78 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.default_compilation.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.default_compilation.sarif @@ -257,7 +257,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -281,7 +281,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.example2.fstackprotectorstrongsspbuffersize8+fnostackprotector.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.example2.fstackprotectorstrongsspbuffersize8+fnostackprotector.sarif index 3a3366aab..3f2619323 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.example2.fstackprotectorstrongsspbuffersize8+fnostackprotector.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.example2.fstackprotectorstrongsspbuffersize8+fnostackprotector.sarif @@ -392,7 +392,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -416,7 +416,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.execstack.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.execstack.sarif index f580a4664..205cbdbea 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.execstack.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.execstack.sarif @@ -255,7 +255,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -279,7 +279,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.execstack.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.execstack.so.sarif index a33a09161..daaefa747 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.execstack.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.execstack.so.sarif @@ -256,7 +256,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -280,7 +280,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.fortified.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.fortified.sarif index 217ee5fc9..8b5d97a90 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.fortified.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.fortified.sarif @@ -258,7 +258,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -282,7 +282,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.gsplitdwarf.5.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.gsplitdwarf.5.sarif index 2e76432e2..2b510b4a9 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.gsplitdwarf.5.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.gsplitdwarf.5.sarif @@ -305,7 +305,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -329,7 +329,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.4.o.no-stack-clash-protection.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.4.o.no-stack-clash-protection.sarif index 12b009058..4047a6153 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.4.o.no-stack-clash-protection.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.4.o.no-stack-clash-protection.sarif @@ -392,7 +392,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -416,7 +416,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.5.o.no-stack-clash-protection.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.5.o.no-stack-clash-protection.sarif index f3d40a143..adf0c3c7e 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.5.o.no-stack-clash-protection.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.5.o.no-stack-clash-protection.sarif @@ -393,7 +393,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -417,7 +417,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.execstack.5.o.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.execstack.5.o.sarif index 62494985f..cc3c9d752 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.execstack.5.o.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.execstack.5.o.sarif @@ -391,7 +391,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -415,7 +415,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.nodwarf.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.nodwarf.sarif index a36dfc20d..9c01fc7a4 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.nodwarf.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.nodwarf.sarif @@ -260,7 +260,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -284,7 +284,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.noexecstack.5.o.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.noexecstack.5.o.sarif index a569b56d0..c6319bde5 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.noexecstack.5.o.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.helloworld.noexecstack.5.o.sarif @@ -393,7 +393,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -417,7 +417,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.immediate_binding.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.immediate_binding.sarif index b9f82025f..c7befda92 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.immediate_binding.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.immediate_binding.sarif @@ -258,7 +258,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -282,7 +282,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_fortification_required.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_fortification_required.sarif index 9d9a0bf3e..03f60e014 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_fortification_required.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_fortification_required.sarif @@ -258,7 +258,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -282,7 +282,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_immediate_binding.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_immediate_binding.sarif index 71162933a..bc3186aeb 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_immediate_binding.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_immediate_binding.sarif @@ -257,7 +257,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -281,7 +281,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_stack_protector.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_stack_protector.sarif index e17ad67f8..0ab1acf0e 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_stack_protector.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.no_stack_protector.sarif @@ -257,7 +257,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -281,7 +281,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.noexecstack.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.noexecstack.sarif index 3bcf7bb65..73430e914 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.noexecstack.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.noexecstack.sarif @@ -257,7 +257,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -281,7 +281,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.noexecstack.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.noexecstack.so.sarif index 5620cac6f..6dbd393bc 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.noexecstack.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.noexecstack.so.sarif @@ -258,7 +258,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -282,7 +282,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.non_pie_executable.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.non_pie_executable.sarif index db4ee473f..664dc72ca 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.non_pie_executable.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.non_pie_executable.sarif @@ -257,7 +257,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -281,7 +281,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.objcopy.stripall.addgnudebuglink.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.objcopy.stripall.addgnudebuglink.sarif index 735d6a2f2..5be7de2d1 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.objcopy.stripall.addgnudebuglink.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.objcopy.stripall.addgnudebuglink.sarif @@ -348,7 +348,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -372,7 +372,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.pie_executable.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.pie_executable.sarif index 2c2bb1acc..c4b0fee13 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.pie_executable.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.pie_executable.sarif @@ -258,7 +258,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -282,7 +282,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.relocationsro.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.relocationsro.sarif index b776bc522..a59d6b6aa 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.relocationsro.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.relocationsro.sarif @@ -257,7 +257,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -281,7 +281,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.relocationsrw.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.relocationsrw.sarif index a0ef6ca4a..a2e514ae2 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.relocationsrw.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.relocationsrw.sarif @@ -256,7 +256,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -280,7 +280,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.requiredsymbol.4.o.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.requiredsymbol.4.o.sarif index bc0d40329..f7db911b1 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.requiredsymbol.4.o.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.requiredsymbol.4.o.sarif @@ -392,7 +392,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -416,7 +416,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.requiredsymbol.5.o.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.requiredsymbol.5.o.sarif index 8ed953ad1..f687763f2 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.requiredsymbol.5.o.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.requiredsymbol.5.o.sarif @@ -393,7 +393,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -417,7 +417,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.shared_library.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.shared_library.so.sarif index 7535680c5..610b42700 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.shared_library.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.shared_library.so.sarif @@ -258,7 +258,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -282,7 +282,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.stack_protector.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.stack_protector.sarif index c56a67f31..6918d5a62 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.stack_protector.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.stack_protector.sarif @@ -257,7 +257,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -281,7 +281,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.stack_protector.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.stack_protector.so.sarif index df7152976..b0743d1f2 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.stack_protector.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.stack_protector.so.sarif @@ -258,7 +258,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -282,7 +282,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.unfortified.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.unfortified.sarif index c048b0860..ef9758639 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.unfortified.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/Expected/gcc.unfortified.sarif @@ -257,7 +257,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -281,7 +281,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.default_compilation.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.default_compilation.sarif index befc9a9da..8252d3d2e 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.default_compilation.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.default_compilation.sarif @@ -261,7 +261,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -285,7 +285,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.example2.fstackprotectorstrongsspbuffersize8+fnostackprotector.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.example2.fstackprotectorstrongsspbuffersize8+fnostackprotector.sarif index 560548b04..2eeaa7a3a 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.example2.fstackprotectorstrongsspbuffersize8+fnostackprotector.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.example2.fstackprotectorstrongsspbuffersize8+fnostackprotector.sarif @@ -396,7 +396,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -420,7 +420,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.execstack.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.execstack.sarif index d635a7f75..0e8ca21c6 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.execstack.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.execstack.sarif @@ -259,7 +259,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -283,7 +283,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.execstack.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.execstack.so.sarif index 8560f144f..4e9c92208 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.execstack.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.execstack.so.sarif @@ -260,7 +260,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -284,7 +284,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.fortified.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.fortified.sarif index eff7055a1..652756270 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.fortified.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.fortified.sarif @@ -262,7 +262,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -286,7 +286,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.gsplitdwarf.5.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.gsplitdwarf.5.sarif index f86046357..6db2d5809 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.gsplitdwarf.5.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.gsplitdwarf.5.sarif @@ -309,7 +309,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -333,7 +333,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.4.o.no-stack-clash-protection.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.4.o.no-stack-clash-protection.sarif index 2d6e9dff9..8214ffc67 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.4.o.no-stack-clash-protection.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.4.o.no-stack-clash-protection.sarif @@ -396,7 +396,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -420,7 +420,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.5.o.no-stack-clash-protection.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.5.o.no-stack-clash-protection.sarif index 985e516a9..c06790048 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.5.o.no-stack-clash-protection.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.5.o.no-stack-clash-protection.sarif @@ -397,7 +397,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -421,7 +421,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.execstack.5.o.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.execstack.5.o.sarif index 9be93f61f..1493f749a 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.execstack.5.o.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.execstack.5.o.sarif @@ -395,7 +395,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -419,7 +419,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.nodwarf.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.nodwarf.sarif index 2b2887550..d59f66bbb 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.nodwarf.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.nodwarf.sarif @@ -264,7 +264,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -288,7 +288,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.noexecstack.5.o.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.noexecstack.5.o.sarif index bb951d417..3713ec502 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.noexecstack.5.o.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.helloworld.noexecstack.5.o.sarif @@ -397,7 +397,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -421,7 +421,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.immediate_binding.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.immediate_binding.sarif index 8a4fe4f08..f325bc8e9 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.immediate_binding.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.immediate_binding.sarif @@ -262,7 +262,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -286,7 +286,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_fortification_required.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_fortification_required.sarif index 2b80e9adb..2ec72b670 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_fortification_required.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_fortification_required.sarif @@ -262,7 +262,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -286,7 +286,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_immediate_binding.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_immediate_binding.sarif index eac4d83c6..293868ce9 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_immediate_binding.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_immediate_binding.sarif @@ -261,7 +261,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -285,7 +285,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_stack_protector.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_stack_protector.sarif index 3f2c0ad62..b36a110a8 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_stack_protector.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.no_stack_protector.sarif @@ -261,7 +261,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -285,7 +285,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.noexecstack.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.noexecstack.sarif index eeb4ff23c..b68e4609b 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.noexecstack.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.noexecstack.sarif @@ -261,7 +261,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -285,7 +285,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.noexecstack.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.noexecstack.so.sarif index 0300745c7..eb231d248 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.noexecstack.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.noexecstack.so.sarif @@ -262,7 +262,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -286,7 +286,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.non_pie_executable.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.non_pie_executable.sarif index 27a065876..6e762da5e 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.non_pie_executable.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.non_pie_executable.sarif @@ -261,7 +261,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -285,7 +285,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.objcopy.stripall.addgnudebuglink.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.objcopy.stripall.addgnudebuglink.sarif index ef39551f4..a09f57b10 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.objcopy.stripall.addgnudebuglink.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.objcopy.stripall.addgnudebuglink.sarif @@ -352,7 +352,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -376,7 +376,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.pie_executable.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.pie_executable.sarif index 67656173f..5c67af132 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.pie_executable.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.pie_executable.sarif @@ -262,7 +262,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -286,7 +286,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.relocationsro.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.relocationsro.sarif index d7dbe6f3a..b80a1c72a 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.relocationsro.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.relocationsro.sarif @@ -261,7 +261,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -285,7 +285,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.relocationsrw.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.relocationsrw.sarif index 08cc3016a..0902c05d8 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.relocationsrw.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.relocationsrw.sarif @@ -260,7 +260,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -284,7 +284,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.requiredsymbol.4.o.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.requiredsymbol.4.o.sarif index 5af48150d..485d1ccca 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.requiredsymbol.4.o.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.requiredsymbol.4.o.sarif @@ -396,7 +396,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -420,7 +420,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.requiredsymbol.5.o.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.requiredsymbol.5.o.sarif index 6ada74c59..d191b6dd6 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.requiredsymbol.5.o.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.requiredsymbol.5.o.sarif @@ -397,7 +397,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -421,7 +421,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.shared_library.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.shared_library.so.sarif index 46ef4149f..ed949aac7 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.shared_library.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.shared_library.so.sarif @@ -262,7 +262,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -286,7 +286,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.stack_protector.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.stack_protector.sarif index 4b6e05def..0d6b159e4 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.stack_protector.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.stack_protector.sarif @@ -261,7 +261,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -285,7 +285,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.stack_protector.so.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.stack_protector.so.sarif index 2881200b6..c63a97a04 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.stack_protector.so.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.stack_protector.so.sarif @@ -262,7 +262,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -286,7 +286,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.unfortified.sarif b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.unfortified.sarif index 5567b7a60..a15a8639c 100644 --- a/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.unfortified.sarif +++ b/src/Test.FunctionalTests.BinSkim.Driver/BaselineTestData/NonWindowsExpected/gcc.unfortified.sarif @@ -261,7 +261,7 @@ }, { "id": "BA3030", - "name": "UseCheckedFunctionsWithGcc", + "name": "UseGccCheckedFunctions", "fullDescription": { "text": "GCC can automatically replace unsafe functions with checked variants when it can statically determine the length of a buffer or string. In the case of an overflow, the checked version will safely exit the program (rather than potentially allowing an exploit). This feature can be enabled by passing '-DFortify_Source=2' when optimization level 2 is enabled ('-O2')." }, @@ -285,7 +285,7 @@ "text": "'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}." } }, - "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseCheckedFunctionsWithGcc" + "helpUri": "https://github.com/microsoft/binskim/blob/main/docs/BinSkimRules.md#rule-BA3030UseGccCheckedFunctions" } ], "properties": { diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/Fail/gcc.unfortified b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/Fail/gcc.unfortified similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/Fail/gcc.unfortified rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/Fail/gcc.unfortified diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/NotApplicable/clang.default_compilation b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/NotApplicable/clang.default_compilation similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/NotApplicable/clang.default_compilation rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/NotApplicable/clang.default_compilation diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/NotApplicable/clang.shared_library.so b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/NotApplicable/clang.shared_library.so similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/NotApplicable/clang.shared_library.so rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/NotApplicable/clang.shared_library.so diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/NotApplicable/gcc.object_file.o b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/NotApplicable/gcc.object_file.o similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/NotApplicable/gcc.object_file.o rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/NotApplicable/gcc.object_file.o diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/Pass/gcc.example1.DFORTIFYSOURCE.2 b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/Pass/gcc.example1.DFORTIFYSOURCE.2 similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/Pass/gcc.example1.DFORTIFYSOURCE.2 rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/Pass/gcc.example1.DFORTIFYSOURCE.2 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/Pass/gcc.fortified b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/Pass/gcc.fortified similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/Pass/gcc.fortified rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/Pass/gcc.fortified diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/Pass/gcc.no_fortification_required b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/Pass/gcc.no_fortification_required similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseCheckedFunctionsWithGcc/Pass/gcc.no_fortification_required rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3030.UseGccCheckedFunctions/Pass/gcc.no_fortification_required diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.10.elf.c.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.c.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.10.elf.c.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.10.elf.cpp.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.10.elf.cpp.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.10.elf.cpp.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.11.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.11.elf.c.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.11.elf.c.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.11.elf.c.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.11.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.11.elf.cpp.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.11.elf.cpp.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.11.elf.cpp.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.12.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.12.elf.c.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.12.elf.c.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.12.elf.c.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.12.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.12.elf.cpp.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.12.elf.cpp.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.12.elf.cpp.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.13.elf.c.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.c.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.13.elf.c.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.13.elf.cpp.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.13.elf.cpp.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.13.elf.cpp.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.14.elf.c.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.c.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.14.elf.c.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.14.elf.cpp.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.14.elf.cpp.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.14.elf.cpp.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.3_6.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.3_6.elf.c.no_safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..3ff465c1036fa8cf36f2b696074a78bdf61f89c4 GIT binary patch literal 17440 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 R>C_0{cApFA^#OdM_zw`lRT2OI literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.7.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.7.elf.c.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.7.elf.c.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.7.elf.c.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.7.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.7.elf.cpp.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.7.elf.cpp.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.7.elf.cpp.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.8.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.8.elf.c.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.8.elf.c.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.8.elf.c.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.8.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.8.elf.cpp.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.8.elf.cpp.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.8.elf.cpp.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.9.elf.c.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.9.elf.c.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.9.elf.c.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.9.elf.c.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.9.elf.cpp.no_safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.9.elf.cpp.no_safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Fail/clang.9.elf.cpp.no_safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Fail/clang.9.elf.cpp.no_safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/NotApplicable/gcc.object_file.o b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/NotApplicable/gcc.object_file.o similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/NotApplicable/gcc.object_file.o rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/NotApplicable/gcc.object_file.o diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.10.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.10.elf.c.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.10.elf.c.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.10.elf.c.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.10.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.10.elf.cpp.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.10.elf.cpp.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.10.elf.cpp.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.11.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.11.elf.c.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.11.elf.c.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.11.elf.c.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.11.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.11.elf.cpp.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.11.elf.cpp.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.11.elf.cpp.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.12.elf.c.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.c.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.12.elf.c.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.12.elf.cpp.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.12.elf.cpp.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.12.elf.cpp.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.13.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.13.elf.c.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.13.elf.c.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.13.elf.c.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.13.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.13.elf.cpp.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.13.elf.cpp.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.13.elf.cpp.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.14.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.14.elf.c.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.14.elf.c.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.14.elf.c.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.14.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.14.elf.cpp.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.14.elf.cpp.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.14.elf.cpp.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.3_7.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.3_7.elf.c.safe_stack new file mode 100644 index 0000000000000000000000000000000000000000..639c13beb0adc036073d69c888c6a1b1e7d1e9af GIT binary patch literal 19936 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 literal 0 HcmV?d00001 diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.7.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.7.elf.c.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.7.elf.c.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.7.elf.c.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.7.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.7.elf.cpp.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.7.elf.cpp.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.7.elf.cpp.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.8.elf.c.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.c.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.8.elf.c.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.8.elf.cpp.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.8.elf.cpp.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.8.elf.cpp.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.9.elf.c.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.9.elf.c.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.9.elf.c.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.9.elf.c.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.9.elf.cpp.safe_stack b/src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.9.elf.cpp.safe_stack similarity index 100% rename from src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableSafeStackWithClang/Pass/clang.9.elf.cpp.safe_stack rename to src/Test.FunctionalTests.BinSkim.Rules/FunctionalTestData/BA3031.EnableClangSafeStack/Pass/clang.9.elf.cpp.safe_stack diff --git a/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs b/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs index 57624d5db..4f15450be 100644 --- a/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs +++ b/src/Test.FunctionalTests.BinSkim.Rules/RuleTests.cs @@ -1399,39 +1399,39 @@ public void BA3011_EnableBindNow_NotApplicable() } [Fact] - public void BA3030_UseCheckedFunctionsWithGCC_Pass() + public void BA3030_UseGccCheckedFunctions_Pass() { - this.VerifyPass(new UseCheckedFunctionsWithGcc(), bypassExtensionValidation: true); + this.VerifyPass(new UseGccCheckedFunctions(), bypassExtensionValidation: true); } [Fact] - public void BA3030_UseCheckedFunctionsWithGCC_Fail() + public void BA3030_UseGccCheckedFunctions_Fail() { - this.VerifyFail(new UseCheckedFunctionsWithGcc(), bypassExtensionValidation: true); + this.VerifyFail(new UseGccCheckedFunctions(), bypassExtensionValidation: true); } [Fact] - public void BA3030_UseCheckedFunctionsWithGCC_NotApplicable() + public void BA3030_UseGccCheckedFunctions_NotApplicable() { - this.VerifyApplicability(new UseCheckedFunctionsWithGcc(), new HashSet()); + this.VerifyApplicability(new UseGccCheckedFunctions(), new HashSet()); } [Fact] - public void BA3031_EnableSafeStackWithClang_Pass() + public void BA3031_EnableClangSafeStack_Pass() { - this.VerifyPass(new EnableSafeStackWithClang(), bypassExtensionValidation: true); + this.VerifyPass(new EnableClangSafeStack(), bypassExtensionValidation: true); } [Fact] - public void BA3031_EnableSafeStackWithClang_Fail() + public void BA3031_EnableClangSafeStack_Fail() { - this.VerifyFail(new EnableSafeStackWithClang(), bypassExtensionValidation: true); + this.VerifyFail(new EnableClangSafeStack(), bypassExtensionValidation: true); } [Fact] - public void BA3031_EnableSafeStackWithClang_NotApplicable() + public void BA3031_EnableClangSafeStack_NotApplicable() { - this.VerifyApplicability(new EnableSafeStackWithClang(), new HashSet()); + this.VerifyApplicability(new EnableClangSafeStack(), new HashSet()); } [Fact] From 2f7651ec890f3a8027d9eaf102cf0d73ecd1f38c Mon Sep 17 00:00:00 2001 From: Shaopeng Li Date: Tue, 12 Jul 2022 00:30:35 -0700 Subject: [PATCH 6/6] fix minor issue --- src/BinSkim.Sdk/MetadataConditions.cs | 2 +- src/ReleaseHistory.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BinSkim.Sdk/MetadataConditions.cs b/src/BinSkim.Sdk/MetadataConditions.cs index 7267da299..0232282ed 100644 --- a/src/BinSkim.Sdk/MetadataConditions.cs +++ b/src/BinSkim.Sdk/MetadataConditions.cs @@ -23,7 +23,6 @@ public static class MetadataConditions public static readonly string ImageIsILOnlyAssembly = SdkResources.MetadataCondition_ImageIsILOnlyAssembly; public static readonly string ImageIsNot32BitBinary = SdkResources.MetadataCondition_ImageIsNot32BitBinary; public static readonly string ImageIsNot64BitBinary = SdkResources.MetadataCondition_ImageIsNot64BitBinary; - public static readonly string ElfIsCoreNoneOrRelocatable = SdkResources.MetadataCondition_ElfIsCoreNoneOrRelocatable; public static readonly string ImageIsArm64BitBinary = SdkResources.MetadataCondition_ImageIsArm64BitBinary; public static readonly string ImageIsInteropAssembly = SdkResources.MetadataCondition_ImageIsInteropAssembly; public static readonly string ImageIsMixedModeBinary = SdkResources.MetadataCondition_ImageIsMixedModeBinary; @@ -31,6 +30,7 @@ public static class MetadataConditions public static readonly string ImageIsILLibraryAssembly = SdkResources.MetadataCondition_ImageIsILLibraryAssembly; public static readonly string ImageIsResourceOnlyBinary = SdkResources.MetadataCondition_ImageIsResourceOnlyBinary; public static readonly string ImageIsDotNetNativeBinary = SdkResources.MetadataCondition_ImageIsDotNetNativeBinary; + public static readonly string ElfIsCoreNoneOrRelocatable = SdkResources.MetadataCondition_ElfIsCoreNoneOrRelocatable; public static readonly string ImageIsResourceOnlyAssembly = SdkResources.MetadataCondition_ImageIsResourceOnlyAssembly; public static readonly string ElfNotBuiltWithGccV8OrLater = SdkResources.MetadataCondition_ElfNotBuiltWithGccV8OrLater; public static readonly string ImageIsKernelModeAndNot64Bit = SdkResources.MetadataCondition_ImageIsKernelModeAndNot64Bit; diff --git a/src/ReleaseHistory.md b/src/ReleaseHistory.md index bd48cbc70..76c495498 100644 --- a/src/ReleaseHistory.md +++ b/src/ReleaseHistory.md @@ -152,7 +152,7 @@ * Cross platform (Windows/Linux) support. * Possibly Breaking:** New Results: Identify and fire configuration errors when located PDBs are stripped * Possibly Breaking:** New Results: False negative removed for BA2015.EnableHighEntropyVA: Correctly flags an AnyCPU binary with HighEntropyVA and Prefer32Bit disabled -* Possibly Breaking:** New Rules: New rules for ELF Binaries (BA3001.EnablePieOnExecutables, BA3002.DoNotMarkStackAsExecutable, BA3003.EnableStackProtector, BA3010.EnableReadOnlyRelocations, and BA3030.UseGccCheckedFunctions) +* Possibly Breaking:** New Rules: New rules for ELF Binaries (BA3001.EnablePieOnExecutables, BA3002.DoNotMarkStackAsExecutable, BA3003.EnableStackProtector, BA3010.EnableReadOnlyRelocations, and BA3030.UseCheckedFunctionsWithGcc) * Possibly Breaking:** New Rules: Provide preliminary BA2024.EnableSpectreMitigations analysis ## **v1.4.5** [NuGet Package](https://www.nuget.org/packages/Microsoft.CodeAnalysis.BinSkim/1.4.5)