In languages which don’t initialize values, this needs to be explicitly done in order to avoid capturing what random bytes are in memory when run.
An example taken from coreboot:
The code used to write a data structure directly without initializing all its fields. The fix was pretty simple once identified:
Usage of instrumentation tools able to detect such cases like Valgrind should help identifying such problems.
Achieve deterministic builds
- Deterministic build systems
- Volatile inputs can disappear
- Stable order for inputs
- Value initialization
- Version information
- Archive metadata
- Stable order for outputs
- Build path
- System images
Define a build environment
- What's in a build environment?
- Recording the build environment
- Definition strategies
- Proprietary operating systems
Distribute the environment
Follow us on Twitter @ReproBuilds and please consider making a donation. Content licensed under CC BY-SA 4.0, style licensed under MIT. Templates and styles based on the Tor Styleguide. Logos and trademarks belong to their respective owners. Patches welcome via our Git repository (instructions) or via our mailing list.