Search Postgresql Archives

Re: Libpq linked to LibreSSL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am using Ubuntu 14.04.5 LTS (64b bit).
If I don't modify anything then my test application runs fine and it load OpenSSL 1.0.1f 6 Jan 2014 from the default directory.

ldd libpq.so 
	linux-vdso.so.1 =>  (0x00007fff74af1000)
	libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fce422ac000)
	libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fce41ecf000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fce41cb1000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fce418e8000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fce416e4000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fce42759000)

If I modify the LD_LIBRARY_PATH to force load LibreSSL 3.6.1 with:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/rothsoft/engines/postgreSQL/Linux/postgresql/libressl/

then LibreSSL 3.6.1 is correctly loaded:

ldd libpq.so 
./libpq.so: libssl.so.1.0.0: no version information available (required by ./libpq.so)
./libpq.so: libcrypto.so.1.0.0: no version information available (required by ./libpq.so)
	linux-vdso.so.1 =>  (0x00007fffc5753000)
	libssl.so.1.0.0 (0x00007fb72ed6e000)
	libcrypto.so.1.0.0 (0x00007fb72e919000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb72e6fb000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb72e332000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fb72f22a000)

I can see the it correctly loads LibreSSL with SSLeay_version(0)) but it crashes when it tried to execute any other TLS function:

gdb ./postgresql_test 
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.3) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./postgresql_test...(no debugging symbols found)...done.
(gdb) r
Starting program: /root/rothsoft/engines/postgreSQL/Linux/postgresql/libressl/postgresql_test 
Warning: couldn't activate thread debugging using libthread_db: Cannot find new threads: generic error
warning: File "/lib/x86_64-linux-gnu/libthread_db-1.0.so" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
	add-auto-load-safe-path /lib/x86_64-linux-gnu/libthread_db-1.0.so
line to your configuration file "/root/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/root/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.
name: PostgreSQL
version: 2.0.0
copy: (c) 2022 SQLabs
desc: PostgreSQL database engine for cubeSQL (LibreSSL 3.6.1)



Program received signal SIGSEGV, Segmentation fault.
pqsecure_raw_write (conn=0x3, ptr=0x629d60, len=314) at fe-secure.c:367
367		if (conn->write_failed)

---
Marco



> On 5 Dec 2022, at 02:14, Michael Paquier <michael@xxxxxxxxxxx> wrote:
> 
> On Sun, Dec 04, 2022 at 09:02:07AM +0100, Marco Bambini wrote:
>> After several attempts (and runtime crashes), I am asking for help
>> with how to compile libpq with LibreSSL support (both dynamic and
>> static links would be OK to me).
>> I know how to compile libpq with OpenSSL support, but I need to
>> force it to link to LibreSSL. 
> 
> LibreSSL is rather close to OpenSSL in terms of API compatibility as
> far as I recall, OpenBSD using it.  Note that we have two buildfarm
> members that I guess are doing so (adding Mikael in CC to confirm
> here): morepork and plover.
> 
> The configure option --with-openssl would be the one to use, but you'd
> better be sure that CFLAGS is pointing at the path(s) of the headers
> of LibreSSL and that LDFLAGS points to the libraries of LibreSSL if
> you have an environment mixing both.  Then at run-time, you could
> force LD_LIBRARY_PATH to load the right thing.
> 
> There may be trickier things like building with OpenLDAP for example,
> as Postgres built with --with-ldap could link to a version of OpenLDAP
> linking to OpenSSL, but you'd want LibreSSL for a full consistency, so
> be careful..  The same could happen with Python, but without knowing
> what kind of environment you are using it will be hard to reach a
> clear conclusion without at least more details.
> --
> Michael







[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux