Files
wolfssl/wolfcrypt
Daniele Lacamera 7ecbd7385a ed448: remove unreachable privKeySet operand in wc_ed448_check_key
Premise:  ed448.c:1517 `if ((ret == 0) && key->privKeySet) { ... }` -- the
          sibling arm of the if/else this condition belongs to.
Claim:    ed448.c:1524 `else if ((ret == 0) && (!key->privKeySet))` -- the
          `!key->privKeySet` operand; and, as a direct consequence, the nested
          `if (ret == 0)` that opened the arm's body.
Proof:    entering the else arm means the sibling condition was false, i.e.
          (ret != 0) || (!privKeySet). && short-circuits, so the else arm's own
          `key->privKeySet` read happens only after `ret == 0` evaluated true --
          and with ret == 0 the sibling's falsity forces !privKeySet. The
          operand is therefore invariantly true. privKeySet is a plain bitfield,
          not volatile, and no statement runs between the two conditions.
          The nested `if (ret == 0)` follows from the same short-circuit: the
          arm is entered only with ret == 0 and nothing precedes the nested test.
Scope:    wc_ed448_check_key contains no #if/#ifdef, so this holds in every
          configuration that compiles ed448.c.
Evidence: llvm-cov MC/DC records this condition's pair as uncovered
          (reports/ed448/GAPS.md row 1503:14:1503:46:1, pre-drift numbering).

Reviewed with `git diff -w`: apart from the two removed lines the change is
pure de-indentation.

ed448.c is inside the FIPS module boundary. Released FIPS flavours pin ed448.c
to a tag and are unaffected; fips-dev/fips-ready build from master and
recompute the in-core hash.

Compiler cross-check: gcc -O2 emits byte-identical code for this file before
and after this commit -- the optimiser had already folded the removed
condition, independently confirming it was dead.
2026-08-03 12:33:14 +02:00
..