From 02b0d2b614e9e91252f8273818529d57ae6b895e Mon Sep 17 00:00:00 2001 From: packerlschupfer <83344883+packerlschupfer@users.noreply.github.com> Date: Tue, 13 Oct 2026 17:44:34 +0200 Subject: [PATCH] Http: probe the CA bundle without throwing on an unreadable path (#15654) CurlGlobalInit() probed the CA bundle with the throwing fs::exists overload, which returns false only for a missing path and throws on EACCES. An existing but unreadable cert path then killed the GUI at startup instead of falling through to the CA_BUNDLES list. Use the error_code overload at both probe sites. Fixes #15653. --- src/slic3r/Utils/Http.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index c268ef251c..3a77fc1c07 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -70,10 +70,14 @@ struct CurlGlobalInit ssl_cafile = X509_get_default_cert_file(); int replace = true; - if (!ssl_cafile || !fs::exists(fs::path(ssl_cafile))) { + // ORCA: non-throwing overload; fs_ec is deliberately unread. An existing but unreadable + // path (a static build's baked-in OPENSSLDIR run as another user, say) must fall + // through to CA_BUNDLES, not throw out of this constructor. + boost::system::error_code fs_ec; + if (!ssl_cafile || !fs::exists(fs::path(ssl_cafile), fs_ec)) { const char * bundle = nullptr; for (const char * b : CA_BUNDLES) { - if (fs::exists(fs::path(b))) { + if (fs::exists(fs::path(b), fs_ec)) { ::setenv(SSL_CA_FILE, bundle = b, replace); break; }