Skip to content

Bump relenv to 0.22.14 (3006.x)#69413

Open
dwoz wants to merge 4 commits into
saltstack:3006.xfrom
dwoz:relenv-3006
Open

Bump relenv to 0.22.14 (3006.x)#69413
dwoz wants to merge 4 commits into
saltstack:3006.xfrom
dwoz:relenv-3006

Conversation

@dwoz

@dwoz dwoz commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Bumps relenv 0.22.110.22.14 on 3006.x.
  • 0.22.12: sqlite 3.53.2.0
  • 0.22.13: openssl 3.5.7
  • 0.22.14: python 3.13.14 / 3.14.6 (not used by 3006.x — kept for completeness)

Test plan

  • CI green on this PR
  • Onedir builds succeed with relenv 0.22.14

OpenSSL 3.5.x (shipped by relenv 0.22.13+) rejects ASN.1-malformed
certs in the Windows root store. CPython's _load_windows_store_certs
feeds the whole store to load_verify_locations(cadata=...) as one
blob, so a single bad cert aborts the load and any import of
salt.ext.tornado.netutil raises SSLError, which in turn breaks
'import salt.config' on Windows.

Pin the module-level default contexts to certifi on Windows to bypass
the OS store until relenv ships a cpython with the upstream fix.
Workaround 3a (in salt.ext.tornado.netutil) only fixed the import-time
SSLContext, but third-party libs in the onedir (aiohttp.connector,
etc.) call ssl.create_default_context() themselves and trip the same
ASN1 NOT_ENOUGH_DATA load_verify_locations(cadata=blob) failure under
OpenSSL 3.5.x.

Replace ssl.SSLContext._load_windows_store_certs at salt import time
with the iter-and-skip variant proposed upstream. Effective for every
caller in the salt process - first- and third-party - as long as
'import salt' runs first, which it does for every salt entry point.

Remove once relenv ships a cpython with the upstream fix.
The previous monkey-patch closed over _ssl, then del'd it at the end
of the if block. Closures resolve at call time, so the first call to
_salt_safe_load_windows_store_certs raised NameError instead of
silently skipping a malformed cert. Capture ssl.SSLError as a default
argument so the function stays self-contained after _ssl is deleted.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:full Run the full test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant