summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2020-02-11 22:03:00 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2020-02-12 05:44:19 +0100
commitfe75ce648c53e641048fe1fcd416868b784860e5 (patch)
tree0a68d09e8e8ef25328673781bfa44b183614e04b
parent61e1e0413296928d929f99c0f006c6cbbcf4ac40 (diff)
Fix a crash in OpenSSL when checking updates in dbgutil build on Windows
... showing a message "OPENSSL_Uplink(00007FFF05F33000,08): no OPENSSL_Applink" with this call stack: libeay32.dll!OPENSSL_showfatal(const char * fmta, ...) Line 986 at C:\lo\src\build\workdir\UnpackedTarball\openssl\crypto\cryptlib.c(986) libeay32.dll!unimplemented() Line 23 at C:\lo\src\build\workdir\UnpackedTarball\openssl\ms\uplink.c(23) libeay32.dll!file_ctrl(bio_st * b, int cmd, long num, void * ptr) Line 334 at C:\lo\src\build\workdir\UnpackedTarball\openssl\crypto\bio\bss_file.c(334) libeay32.dll!BIO_ctrl(bio_st * b, int cmd, long larg, void * parg) Line 361 at C:\lo\src\build\workdir\UnpackedTarball\openssl\crypto\bio\bio_lib.c(361) [Inline Frame] libeay32.dll!X509_print_ex_fp(_iobuf *) Line 93 at C:\lo\src\build\workdir\UnpackedTarball\openssl\crypto\asn1\t_x509.c(93) libeay32.dll!X509_print_fp(_iobuf * fp, x509_st * x) Line 80 at C:\lo\src\build\workdir\UnpackedTarball\openssl\crypto\asn1\t_x509.c(80) neon.dll!make_chain(stack_st_X509 * chain) Line 446 at C:\lo\src\build\workdir\UnpackedTarball\neon\src\ne_openssl.c(446) neon.dll!ne__negotiate_ssl(ne_session_s * sess) Line 752 at C:\lo\src\build\workdir\UnpackedTarball\neon\src\ne_openssl.c(752) neon.dll!open_connection(ne_session_s * sess) Line 1706 at C:\lo\src\build\workdir\UnpackedTarball\neon\src\ne_request.c(1706) neon.dll!send_request(ne_request_s * req, const ne_buffer * request) Line 1011 at C:\lo\src\build\workdir\UnpackedTarball\neon\src\ne_request.c(1011) neon.dll!ne_begin_request(ne_request_s * req) Line 1245 at C:\lo\src\build\workdir\UnpackedTarball\neon\src\ne_request.c(1245) neon.dll!ne_request_dispatch(ne_request_s * req) Line 1456 at C:\lo\src\build\workdir\UnpackedTarball\neon\src\ne_request.c(1456) ucpdav1.dll!webdav_ucp::NeonSession::OPTIONS(const rtl::OUString & inPath, webdav_ucp::DAVOptions & rOptions, const webdav_ucp::DAVRequestEnvironment & rEnv) Line 918 at C:\lo\src\core\ucb\source\ucp\webdav-neon\NeonSession.cxx(918) ucpdav1.dll!webdav_ucp::DAVResourceAccess::OPTIONS(webdav_ucp::DAVOptions & rOptions, const com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> & xEnv) Line 187 at C:\lo\src\core\ucb\source\ucp\webdav-neon\DAVResourceAccess.cxx(187) ucpdav1.dll!webdav_ucp::Content::getResourceOptions(const com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> & xEnv, webdav_ucp::DAVOptions & rDAVOptions, const std::unique_ptr<webdav_ucp::DAVResourceAccess,std::default_delete<webdav_ucp::DAVResourceAccess>> & rResAccess, bool * networkAccessAllowed) Line 3934 at C:\lo\src\core\ucb\source\ucp\webdav-neon\webdavcontent.cxx(3934) ucpdav1.dll!webdav_ucp::Content::open(const com::sun::star::ucb::OpenCommandArgument3 & rArg, const com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> & xEnv) Line 2227 at C:\lo\src\core\ucb\source\ucp\webdav-neon\webdavcontent.cxx(2227) ucpdav1.dll!webdav_ucp::Content::execute(const com::sun::star::ucb::Command & aCommand, long __formal, const com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> & Environment) Line 553 at C:\lo\src\core\ucb\source\ucp\webdav-neon\webdavcontent.cxx(553) updatefeedlo.dll!`anonymous namespace'::UpdateInformationProvider::load(const rtl::OUString & rURL) Line 493 at C:\lo\src\core\extensions\source\update\feed\updatefeed.cxx(493) updatefeedlo.dll!`anonymous namespace'::UpdateInformationProvider::getUpdateInformationEnumeration(const com::sun::star::uno::Sequence<rtl::OUString> & repositories, const rtl::OUString & extensionId) Line 591 at C:\lo\src\core\extensions\source\update\feed\updatefeed.cxx(591) updchklo.dll!checkForUpdates(UpdateInfo & o_rUpdateInfo, const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & rxContext, const com::sun::star::uno::Reference<com::sun::star::task::XInteractionHandler> & rxInteractionHandler, const com::sun::star::uno::Reference<com::sun::star::deployment::XUpdateInformationProvider> & rUpdateInfoProvider, const rtl::OUString & rOS, const rtl::OUString & rArch, const com::sun::star::uno::Sequence<rtl::OUString> & rRepositoryList, const rtl::OUString & rGitID, const rtl::OUString & rInstallSetID) Line 129 at C:\lo\src\core\extensions\source\update\check\updateprotocol.cxx(129) updchklo.dll!checkForUpdates(UpdateInfo & o_rUpdateInfo, const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & rxContext, const com::sun::star::uno::Reference<com::sun::star::task::XInteractionHandler> & rxInteractionHandler, const com::sun::star::uno::Reference<com::sun::star::deployment::XUpdateInformationProvider> & rUpdateInfoProvider) Line 97 at C:\lo\src\core\extensions\source\update\check\updateprotocol.cxx(97) updchklo.dll!`anonymous namespace'::UpdateCheckThread::runCheck(bool & rbExtensionsChecked) Line 393 at C:\lo\src\core\extensions\source\update\check\updatecheck.cxx(393) updchklo.dll!`anonymous namespace'::UpdateCheckThread::run() Line 501 at C:\lo\src\core\extensions\source\update\check\updatecheck.cxx(501) updchklo.dll!threadFunc(void * param) Line 186 at C:\lo\src\core\include\osl\thread.hxx(186) sal3.dll!oslWorkerWrapperFunction(void * pData) Line 62 at C:\lo\src\core\sal\osl\w32\thread.cxx(62) ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void *),1>(void * const parameter) Line 97 at minkernel\crts\ucrt\src\appcrt\startup\thread.cpp(97) kernel32.dll!BaseThreadInitThunk() ntdll.dll!RtlUserThreadStart() The problem is missing OPENSSL_Applink function in soffice.bin (see workdir/UnpackedTarball/openssl/ms/uplink.c), because openssl/applink.c is not included. That started after commit 5c89198f69f4487b1c872269ec6f2931490b3d02, which enabled debug output from Neon in dbgutil builds. Just comment out the call to the OpenSSL function that uses file pointer API from the Neon debug code on Windows. Change-Id: Id0188990e9122ee9fd2b3b6b7292bbeb1d206515 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88412 Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
-rw-r--r--external/neon/UnpackedTarball_neon.mk1
-rw-r--r--external/neon/neon_fix_no_OPENSSL_Applink.patch11
2 files changed, 12 insertions, 0 deletions
diff --git a/external/neon/UnpackedTarball_neon.mk b/external/neon/UnpackedTarball_neon.mk
index ca7da77ea7c4..e12d13b6a623 100644
--- a/external/neon/UnpackedTarball_neon.mk
+++ b/external/neon/UnpackedTarball_neon.mk
@@ -30,6 +30,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,neon,\
external/neon/neon_fix_lock_timeout_windows.patch \
external/neon/neon_fix_sspi_session_timeout.patch \
external/neon/neon_uri_parse_allow_others.patch \
+ $(if $(filter WNT,$(OS)),external/neon/neon_fix_no_OPENSSL_Applink.patch) \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/neon/neon_fix_no_OPENSSL_Applink.patch b/external/neon/neon_fix_no_OPENSSL_Applink.patch
new file mode 100644
index 000000000000..40291ff412bf
--- /dev/null
+++ b/external/neon/neon_fix_no_OPENSSL_Applink.patch
@@ -0,0 +1,11 @@
+--- src/ne_openssl.c
++++ src/ne_openssl.c
+@@ -440,7 +440,7 @@
+ #ifdef NE_DEBUGGING
+ if (ne_debug_mask & NE_DBG_SSL) {
+ fprintf(ne_debug_stream, "Cert #%d:\n", n);
+- X509_print_fp(ne_debug_stream, cert->subject);
++ // X509_print_fp(ne_debug_stream, cert->subject);
+ }
+ #endif
+ if (top == NULL) {