@@ -1461,6 +1461,25 @@ def _inherit_wolfcrypt_version(enabled_deps, overrides, name, version):
14611461 elif name .lower () == 'wolfssl' :
14621462 overrides ['wolfcrypt' ] = version
14631463 return overrides
1464+ def _enabled_deps (dep_flags ):
1465+ """Return the enabled dependency keys, rejecting values outside {yes, no}.
1466+
1467+ Treating anything that is not 'yes' as 'no' loses a dependency silently.
1468+ A build fragment wiring `--dep-wolfssl=$(HAVE_WOLFSSL)` where the variable
1469+ expands to 1, true, on or Y would drop a CVE-bearing component from the
1470+ SBOM with no diagnostic, which is the one failure mode a CRA tool must
1471+ never have. Fail loudly instead.
1472+ """
1473+ enabled = []
1474+ for key , flag_name , value in dep_flags :
1475+ normalized = (value or '' ).strip ().lower ()
1476+ if normalized not in ('yes' , 'no' ):
1477+ sys .exit (f"ERROR: { flag_name } expects 'yes' or 'no', got { value !r} . "
1478+ f"A value outside that set would silently drop { key } from "
1479+ f"the SBOM." )
1480+ if normalized == 'yes' :
1481+ enabled .append (key )
1482+ return enabled
14641483
14651484
14661485def main ():
@@ -1646,15 +1665,12 @@ def main():
16461665 "https://example.com/sbom/wolfssl-X.Y.Z.spdx.json or "
16471666 "urn:uuid:00000000-0000-0000-0000-000000000000." )
16481667
1649- enabled_deps = [
1650- key for key , flag in [
1651- ('wolfssl' , args .dep_wolfssl ),
1652- ('wolfcrypt' , args .dep_wolfcrypt ),
1653- ('openssl' , args .dep_openssl ),
1654- ('libz' , args .dep_libz ),
1655- ]
1656- if flag .lower () == 'yes'
1657- ]
1668+ enabled_deps = _enabled_deps ([
1669+ ('wolfssl' , '--dep-wolfssl' , args .dep_wolfssl ),
1670+ ('wolfcrypt' , '--dep-wolfcrypt' , args .dep_wolfcrypt ),
1671+ ('openssl' , '--dep-openssl' , args .dep_openssl ),
1672+ ('libz' , '--dep-libz' , args .dep_libz ),
1673+ ])
16581674 dep_version_overrides = _parse_dep_version_overrides (args .dep_version )
16591675 # Resolve each enabled dependency's version once, here, and feed the
16601676 # result to both the CDX and SPDX emitters via the overrides map (see
0 commit comments