When SD_DHCP_OPTION_OVERLOAD indicates that the sname and/or file header fields are overloaded with extra DHCP options, dhcp_message_parse() merges those options into message->options but leaves the raw bytes untouched in the header. As a result, dhcp_message_build() emits the header (including the overloaded bytes) verbatim, and the next parse re-parses those bytes, appending duplicate entries to the options map (each tag's iov list grows). Subsequent builds then differ from the first, breaking the parse/build roundtrip. This was caught by fuzz-dhcp-client, which asserts that two consecutive build calls produce identical output. Zero out the overloaded fields after parsing them, since their content has already been merged into the options map. This makes the roundtrip idempotent and avoids re-emitting stale overloaded data in the rebuilt header. The JSON build/parse path was already correct (it omits sname/file from the JSON when the overload bit is set), so only the binary path needed fixing. Fixes https://github.com/systemd/systemd/issues/42139 Co-developed-by: Claude Opus 4.7 <noreply@anthropic.com>
System and Service Manager
Details
Most documentation is available on systemd's web site.
Assorted, older, general information about systemd can be found in the systemd Wiki.
Information about build requirements is provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the Code Map for information about this repository's layout and content.
Please see the Hacking guide for information on how to hack on systemd and test your modifications.
Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.
When preparing patches for systemd, please follow our Coding Style Guidelines.
If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel
Stable branches with backported patches are available in the stable repo.
We have a security bug bounty program sponsored by the Sovereign Tech Fund hosted on YesWeHack
Repositories with distribution packages built from git main are available on OBS, and also repositories with packages built from the latest stable release
