cli: compute self-update checksum in-process (portability)#944
Merged
Conversation
cbm_cli_sha256_file shelled out to sha256sum/shasum, which is unportable: the tool may be absent, and under cmd.exe the single-quoted path is not dequoted so the hash of a downloaded release could never be computed on Windows. Add a small in-process SHA-256 (FIPS 180-4, src/foundation/sha256.c) and use it directly — no external tool, no per-OS branching, no popen. The checksum test now covers three NIST vectors (empty, "abc", and a 56-byte input that forces padding into a second block). Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the sha256sum/shasum shell-out in the self-update checksum verification with an in-process SHA-256 (FIPS 180-4). The shell-out is unportable — the tool may be absent and cmd.exe does not dequote the single-quoted path — so the checksum could never be computed on Windows (dry-run test-windows failure:
cli_sha256_file_matches_known_vectorrc=-1). Newsrc/foundation/sha256.c, validated against three NIST vectors (empty, "abc", 56-byte padding-edge).