2016-12-29 22:31:38 +00:00
# Reference
## Sanitizers
2016-12-30 06:06:54 +00:00
Fuzzers are usually built with one or more [sanitizer ](https://github.com/google/sanitizers ) enabled.
2017-02-08 03:15:53 +00:00
You can select sanitizer configuration by specifying `$SANITIZER` build environment variable using `-e` option:
2016-12-29 22:31:38 +00:00
```bash
2017-04-03 15:20:11 +00:00
python infra/helper.py build_fuzzers --sanitizer undefined json
2016-12-29 22:31:38 +00:00
```
Supported sanitizers:
| `$SANITIZER` | Description
| ------------ | ----------
| `address` *(default)* | [Address Sanitizer ](https://github.com/google/sanitizers/wiki/AddressSanitizer ) with [Leak Sanitizer ](https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer ).
| `undefined` | [Undefined Behavior Sanitizer ](http://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html ).
2017-02-08 03:15:53 +00:00
| `memory` | [Memory Sanitizer ](https://github.com/google/sanitizers/wiki/MemorySanitizer ).< br /> *NOTE: It is critical that you build __all__ the code in your program (including libraries it uses) with Memory Sanitizer. Otherwise, you will see false positive crashes due to an inability to see initializations in uninstrumented code.*
2016-12-29 22:31:38 +00:00
2016-12-29 22:33:51 +00:00
Compiler flag values for predefined configurations are specified in the [Dockerfile ](../infra/base-images/base-builder/Dockerfile ).
2016-12-29 22:31:38 +00:00
These flags can be overriden by specifying `$SANITIZER_FLAGS` directly.
2016-12-29 22:34:20 +00:00
You can choose which configurations to automatically run your fuzzers with in `project.yaml` file (e.g. [sqlite3 ](../projects/sqlite3/project.yaml )):
2016-12-29 22:32:42 +00:00
```yaml
sanitizers:
- address
- undefined
```