diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9bf34850d..b205d0861 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -315,6 +315,7 @@ option(BUILD_PRIVACYGUARD "Build Privacy Guard" YES)
option(BUILD_CDS "Build CDS - Common Diagnostic Stack" YES)
option(BUILD_LIVEEVENTINSPECTOR "Build Live Event Inspector" YES)
option(BUILD_SIGNALS "Build Signals" YES)
+option(BUILD_SANITIZER "Build Sanitizer" YES)
option(LINK_STATIC_DEPENDS "Link dependencies for static build" YES)
# Enable Azure Monitor / Application Insights end-point support
diff --git a/Solutions/MSTelemetrySDK.sln b/Solutions/MSTelemetrySDK.sln
index ef5c2c277..98af6ec6d 100644
--- a/Solutions/MSTelemetrySDK.sln
+++ b/Solutions/MSTelemetrySDK.sln
@@ -131,6 +131,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liveeventinspector", "..\li
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signals", "..\lib\modules\signals\signals.vcxitems", "{D5E1C2E4-DF23-4D2E-85F8-DF737C6A9B9D}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sanitizer", "..\lib\modules\sanitizer\sanitizer.vcxitems", "{67F82868-5F53-4337-95F1-811557AE53E4}"
+EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
..\lib\modules\cds\cds.vcxitems*{0299c8ba-03b9-451e-8a52-8df1291173a5}*SharedItemsImports = 9
@@ -143,6 +145,7 @@ Global
..\lib\modules\filter\filter.vcxitems*{1dc6b38a-b390-34ce-907f-4958807a3d42}*SharedItemsImports = 4
..\lib\modules\liveeventinspector\liveeventinspector.vcxitems*{1dc6b38a-b390-34ce-907f-4958807a3d42}*SharedItemsImports = 4
..\lib\modules\privacyguard\privacyguard.vcxitems*{1dc6b38a-b390-34ce-907f-4958807a3d42}*SharedItemsImports = 4
+ ..\lib\modules\sanitizer\sanitizer.vcxitems*{1dc6b38a-b390-34ce-907f-4958807a3d42}*SharedItemsImports = 4
..\lib\modules\signals\signals.vcxitems*{1dc6b38a-b390-34ce-907f-4958807a3d42}*SharedItemsImports = 4
..\lib\pal\desktop\desktop.vcxitems*{1dc6b38a-b390-34ce-907f-4958807a3d42}*SharedItemsImports = 4
Clienttelemetry\Clienttelemetry.vcxitems*{1dc6b38a-b390-34ce-907f-4958807a3d42}*SharedItemsImports = 4
@@ -156,6 +159,7 @@ Global
..\lib\modules\filter\filter.vcxitems*{216a8e97-21f7-4bef-9e52-7f772c177c32}*SharedItemsImports = 4
..\lib\modules\liveeventinspector\liveeventinspector.vcxitems*{216a8e97-21f7-4bef-9e52-7f772c177c32}*SharedItemsImports = 4
..\lib\modules\privacyguard\privacyguard.vcxitems*{216a8e97-21f7-4bef-9e52-7f772c177c32}*SharedItemsImports = 4
+ ..\lib\modules\sanitizer\sanitizer.vcxitems*{216a8e97-21f7-4bef-9e52-7f772c177c32}*SharedItemsImports = 4
..\lib\modules\signals\signals.vcxitems*{216a8e97-21f7-4bef-9e52-7f772c177c32}*SharedItemsImports = 4
..\lib\pal\desktop\desktop.vcxitems*{216a8e97-21f7-4bef-9e52-7f772c177c32}*SharedItemsImports = 4
Clienttelemetry\Clienttelemetry.vcxitems*{216a8e97-21f7-4bef-9e52-7f772c177c32}*SharedItemsImports = 4
@@ -168,6 +172,7 @@ Global
..\lib\modules\filter\filter.vcxitems*{434c594f-cde0-3690-ac0a-9ed854b74092}*SharedItemsImports = 4
..\lib\modules\liveeventinspector\liveeventinspector.vcxitems*{434c594f-cde0-3690-ac0a-9ed854b74092}*SharedItemsImports = 4
..\lib\modules\privacyguard\privacyguard.vcxitems*{434c594f-cde0-3690-ac0a-9ed854b74092}*SharedItemsImports = 4
+ ..\lib\modules\sanitizer\sanitizer.vcxitems*{434c594f-cde0-3690-ac0a-9ed854b74092}*SharedItemsImports = 4
..\lib\pal\desktop\desktop.vcxitems*{434c594f-cde0-3690-ac0a-9ed854b74092}*SharedItemsImports = 4
Clienttelemetry\Clienttelemetry.vcxitems*{434c594f-cde0-3690-ac0a-9ed854b74092}*SharedItemsImports = 4
Clienttelemetry\Clienttelemetry.vcxitems*{45d41acc-2c3c-43d2-bc10-02aa73ffc7c7}*SharedItemsImports = 9
@@ -178,6 +183,7 @@ Global
..\lib\modules\filter\filter.vcxitems*{49077dbf-e363-4d2d-8334-636569a771b6}*SharedItemsImports = 4
..\lib\modules\liveeventinspector\liveeventinspector.vcxitems*{49077dbf-e363-4d2d-8334-636569a771b6}*SharedItemsImports = 4
..\lib\modules\privacyguard\privacyguard.vcxitems*{49077dbf-e363-4d2d-8334-636569a771b6}*SharedItemsImports = 4
+ ..\lib\modules\sanitizer\sanitizer.vcxitems*{49077dbf-e363-4d2d-8334-636569a771b6}*SharedItemsImports = 4
..\lib\modules\signals\signals.vcxitems*{49077dbf-e363-4d2d-8334-636569a771b6}*SharedItemsImports = 4
..\lib\pal\universal\universal.vcxitems*{49077dbf-e363-4d2d-8334-636569a771b6}*SharedItemsImports = 4
..\lib\shared\Shared.vcxitems*{49077dbf-e363-4d2d-8334-636569a771b6}*SharedItemsImports = 4
@@ -189,6 +195,7 @@ Global
..\lib\modules\filter\filter.vcxitems*{57a81ed9-5603-471f-afee-9656da74178d}*SharedItemsImports = 4
..\lib\modules\liveeventinspector\liveeventinspector.vcxitems*{57a81ed9-5603-471f-afee-9656da74178d}*SharedItemsImports = 4
..\lib\modules\privacyguard\privacyguard.vcxitems*{57a81ed9-5603-471f-afee-9656da74178d}*SharedItemsImports = 4
+ ..\lib\modules\sanitizer\sanitizer.vcxitems*{57a81ed9-5603-471f-afee-9656da74178d}*SharedItemsImports = 4
..\lib\modules\signals\signals.vcxitems*{57a81ed9-5603-471f-afee-9656da74178d}*SharedItemsImports = 4
..\lib\pal\universal\universal.vcxitems*{57a81ed9-5603-471f-afee-9656da74178d}*SharedItemsImports = 4
Clienttelemetry\Clienttelemetry.vcxitems*{57a81ed9-5603-471f-afee-9656da74178d}*SharedItemsImports = 4
@@ -201,6 +208,7 @@ Global
..\lib\modules\filter\filter.vcxitems*{7a75748d-5d6b-48a5-83cb-f5f439133d59}*SharedItemsImports = 4
..\lib\modules\liveeventinspector\liveeventinspector.vcxitems*{7a75748d-5d6b-48a5-83cb-f5f439133d59}*SharedItemsImports = 4
..\lib\modules\privacyguard\privacyguard.vcxitems*{7a75748d-5d6b-48a5-83cb-f5f439133d59}*SharedItemsImports = 4
+ ..\lib\modules\sanitizer\sanitizer.vcxitems*{7a75748d-5d6b-48a5-83cb-f5f439133d59}*SharedItemsImports = 4
..\lib\modules\signals\signals.vcxitems*{7a75748d-5d6b-48a5-83cb-f5f439133d59}*SharedItemsImports = 4
..\lib\pal\universal\universal.vcxitems*{7a75748d-5d6b-48a5-83cb-f5f439133d59}*SharedItemsImports = 4
Clienttelemetry\Clienttelemetry.vcxitems*{7a75748d-5d6b-48a5-83cb-f5f439133d59}*SharedItemsImports = 4
@@ -208,6 +216,7 @@ Global
..\lib\modules\filter\filter.vcxitems*{d74e42ec-c6ee-4944-b92a-eb711be002a9}*SharedItemsImports = 9
..\lib\shared\Shared.vcxitems*{dc91621e-a203-42df-8e03-3a23dd0602b1}*SharedItemsImports = 4
..\lib\modules\privacyguard\privacyguard.vcxitems*{e1f6ca48-3bbf-4378-8d1e-6bbf4869db5b}*SharedItemsImports = 9
+ ..\lib\modules\sanitizer\sanitizer.vcxitems*{e1f6ca48-3bbf-4378-8d1e-6bbf4869db5b}*SharedItemsImports = 9
..\lib\shared\Shared.vcxitems*{ef859326-2a11-481c-ae8c-03d754f1c412}*SharedItemsImports = 9
..\lib\modules\liveeventinspector\liveeventinspector.vcxitems*{f8bb42f6-9c93-423b-b0c6-23ef79dd959a}*SharedItemsImports = 9
..\lib\decoder\decoder.vcxitems*{fe79fb3a-b3ef-38df-b7a4-11277db72b39}*SharedItemsImports = 4
@@ -217,6 +226,7 @@ Global
..\lib\modules\filter\filter.vcxitems*{fe79fb3a-b3ef-38df-b7a4-11277db72b39}*SharedItemsImports = 4
..\lib\modules\liveeventinspector\liveeventinspector.vcxitems*{fe79fb3a-b3ef-38df-b7a4-11277db72b39}*SharedItemsImports = 4
..\lib\modules\privacyguard\privacyguard.vcxitems*{fe79fb3a-b3ef-38df-b7a4-11277db72b39}*SharedItemsImports = 4
+ ..\lib\modules\sanitizer\sanitizer.vcxitems*{fe79fb3a-b3ef-38df-b7a4-11277db72b39}*SharedItemsImports = 4
..\lib\pal\desktop\desktop.vcxitems*{fe79fb3a-b3ef-38df-b7a4-11277db72b39}*SharedItemsImports = 4
Clienttelemetry\Clienttelemetry.vcxitems*{fe79fb3a-b3ef-38df-b7a4-11277db72b39}*SharedItemsImports = 4
EndGlobalSection
diff --git a/Solutions/win10-cs/win10-cs.vcxproj b/Solutions/win10-cs/win10-cs.vcxproj
index ae02d5a4f..3d557d277 100644
--- a/Solutions/win10-cs/win10-cs.vcxproj
+++ b/Solutions/win10-cs/win10-cs.vcxproj
@@ -101,6 +101,7 @@
+
diff --git a/Solutions/win10-dll/win10-dll.vcxproj b/Solutions/win10-dll/win10-dll.vcxproj
index b7d16d9e4..da6a93471 100644
--- a/Solutions/win10-dll/win10-dll.vcxproj
+++ b/Solutions/win10-dll/win10-dll.vcxproj
@@ -104,6 +104,7 @@
+
diff --git a/Solutions/win10-lib/win10-lib.vcxproj b/Solutions/win10-lib/win10-lib.vcxproj
index 30628d59e..68679a0fc 100644
--- a/Solutions/win10-lib/win10-lib.vcxproj
+++ b/Solutions/win10-lib/win10-lib.vcxproj
@@ -100,6 +100,7 @@
+
diff --git a/Solutions/win32-dll/win32-dll.vcxproj b/Solutions/win32-dll/win32-dll.vcxproj
index f561b5783..0f91d829c 100644
--- a/Solutions/win32-dll/win32-dll.vcxproj
+++ b/Solutions/win32-dll/win32-dll.vcxproj
@@ -102,6 +102,7 @@
+
diff --git a/Solutions/win32-lib/win32-lib.vcxproj b/Solutions/win32-lib/win32-lib.vcxproj
index df3417ec3..90602e232 100644
--- a/Solutions/win32-lib/win32-lib.vcxproj
+++ b/Solutions/win32-lib/win32-lib.vcxproj
@@ -149,6 +149,7 @@
+
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index bb2e54568..09a6daf4a 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,7 +1,7 @@
# Honor visibility properties for all target types
cmake_policy(SET CMP0063 NEW)
-include_directories( . ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include/public ${CMAKE_CURRENT_SOURCE_DIR}/include/public ${CMAKE_CURRENT_SOURCE_DIR}/include/mat ${CMAKE_CURRENT_SOURCE_DIR}/pal ${CMAKE_CURRENT_SOURCE_DIR}/utils ${CMAKE_CURRENT_SOURCE_DIR}/modules/exp ${CMAKE_CURRENT_SOURCE_DIR}/modules/dataviewer ${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard ${CMAKE_CURRENT_SOURCE_DIR}/modules/liveeventinspector ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/Reachability ${CMAKE_CURRENT_SOURCE_DIR}/modules/cds ${CMAKE_CURRENT_SOURCE_DIR}/modules/signals /usr/local/include )
+include_directories( . ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include/public ${CMAKE_CURRENT_SOURCE_DIR}/include/public ${CMAKE_CURRENT_SOURCE_DIR}/include/mat ${CMAKE_CURRENT_SOURCE_DIR}/pal ${CMAKE_CURRENT_SOURCE_DIR}/utils ${CMAKE_CURRENT_SOURCE_DIR}/modules/exp ${CMAKE_CURRENT_SOURCE_DIR}/modules/dataviewer ${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard ${CMAKE_CURRENT_SOURCE_DIR}/modules/liveeventinspector ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/Reachability ${CMAKE_CURRENT_SOURCE_DIR}/modules/cds ${CMAKE_CURRENT_SOURCE_DIR}/modules/signals ${CMAKE_CURRENT_SOURCE_DIR}/modules/sanitizer /usr/local/include )
set(SRCS decorators/BaseDecorator.cpp
packager/BondSplicer.cpp
@@ -110,6 +110,17 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/signals/ AND BUILD_SIGNALS)
)
endif()
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/sanitizer/ AND BUILD_SANITIZER)
+ list(APPEND SRCS
+ modules/sanitizer/Sanitizer.cpp
+ modules/sanitizer/SanitizerProvider.cpp
+ modules/sanitizer/SanitizerStringUtils.cpp
+ modules/sanitizer/SanitizerTargets.cpp
+ modules/sanitizer/SanitizerTrie.cpp
+ modules/sanitizer/SanitizerTrieNode.cpp
+ )
+endif()
+
if(PAL_IMPLEMENTATION STREQUAL "CPP11")
if(APPLE)
list(APPEND SRCS
diff --git a/lib/api/LogManagerImpl.cpp b/lib/api/LogManagerImpl.cpp
index 6a98e6406..94e285aa1 100644
--- a/lib/api/LogManagerImpl.cpp
+++ b/lib/api/LogManagerImpl.cpp
@@ -85,6 +85,19 @@
#endif
#endif
+#ifdef HAVE_MAT_SANITIZER
+#if defined __has_include
+#if __has_include("modules/sanitizer/Sanitizer.hpp")
+#include "modules/sanitizer/Sanitizer.hpp"
+#else
+/* Compiling without Sanitizer support because Santizer private header is unavailable */
+#undef HAVE_MAT_SANITIZER
+#endif
+#else
+#include "modules/sanitizer/Sanitizer.hpp"
+#endif
+#endif
+
namespace MAT_NS_BEGIN
{
void DeadLoggers::AddMap(LoggerMap&& source)
diff --git a/lib/include/mat/config-default.h b/lib/include/mat/config-default.h
index 554e97c1a..9617611c9 100644
--- a/lib/include/mat/config-default.h
+++ b/lib/include/mat/config-default.h
@@ -16,6 +16,9 @@
# if __has_include("modules/signals/Signals.hpp")
# define HAVE_MAT_SIGNALS
# endif
+# if __has_include("modules/sanitizer/Sanitizer.hpp")
+# define HAVE_MAT_SANITIZER
+# endif
#endif
#endif
#if defined(HAVE_PRIVATE_MODULES)
diff --git a/lib/modules b/lib/modules
index 8539da62d..0daf05cb6 160000
--- a/lib/modules
+++ b/lib/modules
@@ -1 +1 @@
-Subproject commit 8539da62dd5e41e2847337df1d95f0f841d3a738
+Subproject commit 0daf05cb6d30f6426439b9442371ec355993f603
diff --git a/tests/functests/FuncTests.vcxproj b/tests/functests/FuncTests.vcxproj
index d2578806f..50f4e2427 100644
--- a/tests/functests/FuncTests.vcxproj
+++ b/tests/functests/FuncTests.vcxproj
@@ -450,6 +450,9 @@
+
+
+
diff --git a/tests/functests/FuncTests.vcxproj.filters b/tests/functests/FuncTests.vcxproj.filters
index a6aee552b..22f2ac5d9 100644
--- a/tests/functests/FuncTests.vcxproj.filters
+++ b/tests/functests/FuncTests.vcxproj.filters
@@ -23,6 +23,7 @@
+
diff --git a/tests/unittests/UnitTests.vcxproj b/tests/unittests/UnitTests.vcxproj
index 3355b1404..76426e9b5 100644
--- a/tests/unittests/UnitTests.vcxproj
+++ b/tests/unittests/UnitTests.vcxproj
@@ -494,6 +494,16 @@
+
+
+
+
+
+
+
+
+
+