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, Mastodon @firstname.lastname@example.org & Reddit 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. • Full contact info