1
1
# ` sanitizer `
2
2
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
+
3
12
The tracking issues for this feature are:
4
13
5
14
* [ #39699 ] ( https://github.com/rust-lang/rust/issues/39699 ) .
@@ -9,21 +18,26 @@ The tracking issues for this feature are:
9
18
10
19
This feature allows for use of one of following sanitizers:
11
20
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).
27
41
28
42
To enable a sanitizer compile with ` -Zsanitizer=address ` ,` -Zsanitizer=cfi ` ,
29
43
` -Zsanitizer=hwaddress ` , ` -Zsanitizer=leak ` , ` -Zsanitizer=memory ` ,
0 commit comments