[CONC-451] libmariadb.so C Connector shared library has a dependency on versioned OpenSSL symbols Created: 2020-02-04 Updated: 2020-05-04 |
|
| Status: | Open |
| Project: | MariaDB Connector/C |
| Component/s: | None |
| Affects Version/s: | 3.1.7 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | David Ritter | Assignee: | Georg Richter |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | link, openssl | ||
| Environment: |
Red Hat 7.6 |
||
| Issue Links: |
|
||||
| Description |
|
I am attempting to use the libmariadb.so shared library from the mariadb-connector-c-3.1.7-linux-x86_64 binary download link. When linking against it using either the system OpenSSL 1.0.2 binaries or ones I built myself I see the following link error:
After doing some research I determined that the MariaDB C client has been built and linked on a system that has OpenSSL binaries that have version signed symbols. https://mta.openssl.org/pipermail/openssl-users/2018-July/008301.html Using these instructions I built new OpenSSL binaries that have the OPENSSL_1.0.0 version applied to all globally exported symbols. With this new set of binaries I am able to link against the MariaDB C Connector. Vanilla builds of OpenSSL do not document using symbol versioning and as far as I can tell the Red Hat 7.x distributions we are using do not provide them either. Is this by design or an accident. I think the generic Linux binaries should be linked against a more generic build of OpenSSL. |
| Comments |
| Comment by Sergei Golubchik [ 2020-02-05 ] |
|
As workarounds you could use mariadb tarball from https://downloads.mariadb.org/mariadb/10.4.12/#os_group=linux_generic which includes Connector/C linked with GnuTLS. Or you can install from https://downloads.mariadb.org/mariadb/repositories/#distro=RedHat&distro_release=rhel7-amd64--rhel7&version=10.4 and you'll get Connector/C in MariaDB-shared rpm built with OpenSSL specifically on and for RHEL 7 |
| Comment by David Ritter [ 2020-02-05 ] |
|
I agree that those are both reasonable workarounds however I still content the generic Linux binaries should be linked against a more generic build of OpenSSL that doesn't have an arbitrary symbol versioning scheme (I say arbitrary because I can find nothing on the OpenSSL website or build instructions that not the version OPENSSL_1.0.0 is an official tag) |