11# ` sanitizer `
22
3+ Sanitizers are tools that help detect and prevent various types of bugs and
4+ vulnerabilities in software. They are available in compilers and work by
5+ instrumenting the code to add additional runtime checks. While they provide
6+ powerful tools for identifying bugs or security issues, it's important to note
7+ that using sanitizers can introduce runtime overhead and might not catch all
8+ possible issues. Therefore, they are typically used alongside other best
9+ practices in software development, such as testing and fuzzing, to ensure the
10+ highest level of software quality and security.
11+
312The tracking issues for this feature are:
413
514* [ #39699 ] ( https://github.com/rust-lang/rust/issues/39699 ) .
@@ -9,21 +18,26 @@ The tracking issues for this feature are:
918
1019This feature allows for use of one of following sanitizers:
1120
12- * [ AddressSanitizer] ( #addresssanitizer ) a fast memory error detector.
13- * [ ControlFlowIntegrity] ( #controlflowintegrity ) LLVM Control Flow Integrity (CFI) provides
14- forward-edge control flow protection.
15- * [ HWAddressSanitizer] ( #hwaddresssanitizer ) a memory error detector similar to
16- AddressSanitizer, but based on partial hardware assistance.
17- * [ KernelControlFlowIntegrity] ( #kernelcontrolflowintegrity ) LLVM Kernel Control
18- Flow Integrity (KCFI) provides forward-edge control flow protection for
19- operating systems kernels.
20- * [ LeakSanitizer] ( #leaksanitizer ) a run-time memory leak detector.
21- * [ MemorySanitizer] ( #memorysanitizer ) a detector of uninitialized reads.
22- * [ MemTagSanitizer] ( #memtagsanitizer ) fast memory error detector based on
23- Armv8.5-A Memory Tagging Extension.
24- * [ SafeStack] ( #safestack ) provides backward-edge control flow protection by separating the stack into safe and unsafe regions.
25- * [ ShadowCallStack] ( #shadowcallstack ) provides backward-edge control flow protection (aarch64 only).
26- * [ ThreadSanitizer] ( #threadsanitizer ) a fast data race detector.
21+ * Those intended for testing or fuzzing (but not production use):
22+ * [ AddressSanitizer] ( #addresssanitizer ) a fast memory error detector.
23+ * [ HWAddressSanitizer] ( #hwaddresssanitizer ) a memory error detector similar to
24+ AddressSanitizer, but based on partial hardware assistance.
25+ * [ LeakSanitizer] ( #leaksanitizer ) a run-time memory leak detector.
26+ * [ MemorySanitizer] ( #memorysanitizer ) a detector of uninitialized reads.
27+ * [ ThreadSanitizer] ( #threadsanitizer ) a fast data race detector.
28+
29+ * Those that apart from testing, may be used in production:
30+ * [ ControlFlowIntegrity] ( #controlflowintegrity ) LLVM Control Flow Integrity
31+ (CFI) provides forward-edge control flow protection.
32+ * [ KernelControlFlowIntegrity] ( #kernelcontrolflowintegrity ) LLVM Kernel
33+ Control Flow Integrity (KCFI) provides forward-edge control flow protection
34+ for operating systems kernels.
35+ * [ MemTagSanitizer] ( #memtagsanitizer ) fast memory error detector based on
36+ Armv8.5-A Memory Tagging Extension.
37+ * [ SafeStack] ( #safestack ) provides backward-edge control flow protection by
38+ separating the stack into safe and unsafe regions.
39+ * [ ShadowCallStack] ( #shadowcallstack ) provides backward-edge control flow
40+ protection (aarch64 only).
2741
2842To enable a sanitizer compile with ` -Zsanitizer=address ` ,` -Zsanitizer=cfi ` ,
2943` -Zsanitizer=hwaddress ` , ` -Zsanitizer=leak ` , ` -Zsanitizer=memory ` ,
0 commit comments