Looks like High SIerra is incorrectly loading BoringSSL dynamic libraries instead of the requested OpenSSL libraries. Those libraries have the same APIs (BoringSSL is a fork of OpenSSL) but are binary incompatible to each other, which leads to the crash when SIPE calls crypto functions from the backend.
A possible solution might be this change, but it would need to be tested if after this change the binary still works on older Mac OS X.
Therefore this is not a bug, but must be handled as feature request.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Can somebody who has High Sierra (10.13) install run the following 2 commands in Terminal and post the output here? In my examples I give output from Sierra (10.12):
I think I found a quick fix, but that will always require building against an older SDK than 10.13.
Can you please try this release package on 10.13? It should now load the OpenSSL 0.9.8 libcrypto dynamic library instead of the default libcrypto dynamic library.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It would still be nice to get the output of the two commands from High Sierra.
Root cause was a mistake I maded implementing the OpenSSL support for the Adium plugin: I should have added -lcrypto to the linker command line. Unfortunately the plugin code needs to be linked with -undefined dynamic_lookup which hides the problem, i.e. there are no linker errors due to missing symbols. I had been wondering why this works and now I know why.
When Adium is running, some other dependency (maybe CDSA?) must already load libcrypto.dylib into the virtual address space, i.e. when Adium loads the SIPE plugin the OpenSSL references get resolved without problems by the dynamic loader. Until OS X 10.13 this worked, because the dependency triggered the load of libcrypto.0.9.8.dylib. But in OS X 10.13 a newer libcrypto.dylib gets loaded, which has the same symbol names, but is binary incompatible to 0.9.8.
Now the linker command line includes a reference to librypto.0.9.8.dylib and thus the SIPE binary has an explicit dependency on it. This makes sure the dynamic linker loads the correct library and resolves the OpenSSL references with that version. This should work until Apple decides to drop backward compatibility, i.e. by removing libcrypto.0.9.8.dylib from the system.
Closing as IMPLEMENTED.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Looks like High SIerra is incorrectly loading BoringSSL dynamic libraries instead of the requested OpenSSL libraries. Those libraries have the same APIs (BoringSSL is a fork of OpenSSL) but are binary incompatible to each other, which leads to the crash when SIPE calls crypto functions from the backend.
A possible solution might be this change, but it would need to be tested if after this change the binary still works on older Mac OS X.
Therefore this is not a bug, but must be handled as feature request.
Ticket moved from /p/sipe/bugs/332/
Can't be converted:
Diff:
Can somebody who has High Sierra (10.13) install run the following 2 commands in Terminal and post the output here? In my examples I give output from Sierra (10.12):
If I interpret the crash log correctly then on 10.13
Fully updated 10.13.
I think I found a quick fix, but that will always require building against an older SDK than 10.13.
Can you please try this release package on 10.13? It should now load the OpenSSL 0.9.8 libcrypto dynamic library instead of the default libcrypto dynamic library.
Stefan, the updated version works flawlessly.
Thanks for the feedback, Andre.
Final solution pushed as git commit 0a8e5a64.
It would still be nice to get the output of the two commands from High Sierra.
Root cause was a mistake I maded implementing the OpenSSL support for the Adium plugin: I should have added
-lcryptoto the linker command line. Unfortunately the plugin code needs to be linked with-undefined dynamic_lookupwhich hides the problem, i.e. there are no linker errors due to missing symbols. I had been wondering why this works and now I know why.When Adium is running, some other dependency (maybe CDSA?) must already load
libcrypto.dylibinto the virtual address space, i.e. when Adium loads the SIPE plugin the OpenSSL references get resolved without problems by the dynamic loader. Until OS X 10.13 this worked, because the dependency triggered the load oflibcrypto.0.9.8.dylib. But in OS X 10.13 a newerlibcrypto.dylibgets loaded, which has the same symbol names, but is binary incompatible to 0.9.8.Now the linker command line includes a reference to
librypto.0.9.8.dyliband thus the SIPE binary has an explicit dependency on it. This makes sure the dynamic linker loads the correct library and resolves the OpenSSL references with that version. This should work until Apple decides to drop backward compatibility, i.e. by removinglibcrypto.0.9.8.dylibfrom the system.Closing as IMPLEMENTED.