Index | Thread | Search

From:
Jeremie Courreges-Anglas <jca@wxcvbn.org>
Subject:
Re: Update to gdb-13.2 - tests wanted
To:
Theo Buehler <tb@openbsd.org>
Cc:
ports@openbsd.org, gkoehler@openbsd.org, kettenis@openbsd.org, miod@openbsd.org, visa@openbsd.org
Date:
Fri, 8 Nov 2024 13:54:45 +0100

Download raw body.

Thread
On Fri, Nov 08, 2024 at 09:29:31AM +0100, Theo Buehler wrote:
> It builds and kind of works on arm64. It's much less broken than 9.2
> so I don't believe that's a blocker,

Thanks for the tests.  "Less broken" sounds like a good reason to
update to 13.2.

> but stepping between shared objects
> is strange.
> 
> As you can see in this reproducer, instead of breaking at the entry of
> EVP_aead_aes_256_gcm() when I try to step, it slithers way past that and
> only remembers to break much later in libc rather than libcrypto.

I can give this a shot when I get back home, but I won't pretend I'll
be able to fix it. ;)

> $ egdb -q openssl
> Reading symbols from openssl...
> (No debugging symbols found in openssl)
> (gdb) b tls13_cipher_aead
> Function "tls13_cipher_aead" not defined.
> Make breakpoint pending on future shared library load? (y or [n]) y
> Breakpoint 1 (tls13_cipher_aead) pending.
> (gdb) run s_client -connect libressl.org:443
> Starting program: /usr/bin/openssl s_client -connect libressl.org:443
> CONNECTED(00000003)
> 
> Breakpoint 1, tls13_cipher_aead (cipher=<optimized out>) at /usr/src/lib/libssl/tls13_lib.c:78
> 78		if (cipher == NULL)
> (gdb) bt
> #0  tls13_cipher_aead (cipher=<optimized out>) at /usr/src/lib/libssl/tls13_lib.c:78
> #1  0x00000012501a2b28 in tls13_client_engage_record_protection (ctx=0x12a8be6180)
>     at /usr/src/lib/libssl/tls13_client.c:353
> #2  tls13_server_hello_recv (ctx=0x12a8be6180, cbs=<optimized out>)
>     at /usr/src/lib/libssl/tls13_client.c:492
> #3  0x00000012501a29d8 [PAC] in tls13_server_hello_retry_request_recv (ctx=0x12a8be6180,
>     cbs=0x7dc49c23e8) at /usr/src/lib/libssl/tls13_client.c:409
> #4  0x0000001250185520 [PAC] in tls13_handshake_recv_action (ctx=0x12a8be6180,
>     action=0x12501d3820 <state_machine+64>) at /usr/src/lib/libssl/tls13_handshake.c:549
> #5  tls13_handshake_perform (ctx=0x12a8be6180) at /usr/src/lib/libssl/tls13_handshake.c:412
> #6  0x000000125018acac [PAC] in tls13_legacy_connect (ssl=0x134c957a00)
>     at /usr/src/lib/libssl/tls13_legacy.c:466
> #7  0x000000125018a744 [PAC] in tls13_legacy_write_bytes (ssl=0x134c957a00, type=32, vbuf=0x0,
>     len=0) at /usr/src/lib/libssl/tls13_legacy.c:266
> #8  0x0000000e4f8e2c20 [PAC] in ?? ()
> #9  0x0000000e4f8d7e38 [PAC] in ?? ()
> #10 0x0000000e4f8c038c [PAC] in ?? ()
> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
> (gdb) n
> 80		if (cipher->algorithm_ssl != SSL_TLSV1_3)
> (gdb)
> 83		switch (cipher->algorithm_enc) {
> (gdb)
> 87			return EVP_aead_aes_256_gcm();
> (gdb) s
> _libc_time (t=<optimized out>) at /usr/src/lib/libc/gen/time.c:36
> 36	{
> (gdb) bt
> #0  _libc_time (t=<optimized out>) at /usr/src/lib/libc/gen/time.c:36
> #1  0x00000012f2c9b5b0 in x509_verify_cert_times (cert=0x12951ce620,
>     cmp_time=<error reading variable: Cannot access memory at address 0x0>,
>     error=<optimized out>) at /usr/src/lib/libcrypto/x509/x509_verify.c:820
> #2  x509_verify_cert_valid (ctx=0x12a49c3280, cert=0x12951ce620, current_chain=0x134c95b720)
>     at /usr/src/lib/libcrypto/x509/x509_verify.c:940
> #3  0x00000012f2c9bbcc [PAC] in x509_verify_consider_candidate (ctx=0x12a49c3280,
>     cert=0x12951ce0e0, is_root_cert=0, candidate=0x12951ce620, current_chain=0x134c95b720,
>     full_chain=1, name=<optimized out>) at /usr/src/lib/libcrypto/x509/x509_verify.c:592
> #4  0x00000012f2c9b1b4 [PAC] in x509_verify_build_chains (ctx=0x12a49c3280, cert=0x12951ce0e0,
>     current_chain=0x134c95b720, full_chain=1, name=0x0)
>     at /usr/src/lib/libcrypto/x509/x509_verify.c:729
> #5  0x00000012f2c9a66c [PAC] in x509_verify (ctx=0x12a49c3280, leaf=0x12951ce0e0, name=0x0)
>     at /usr/src/lib/libcrypto/x509/x509_verify.c:1164
> #6  0x00000012f2c8f830 [PAC] in _lcry_X509_verify_cert (ctx=0x12a49bfe40)
>     at /usr/src/lib/libcrypto/x509/x509_vfy.c:644
> #7  0x00000012501b74c0 [PAC] in ssl_verify_cert_chain (s=0x134c957a00, certs=<optimized out>)
>     at /usr/src/lib/libssl/ssl_cert.c:437
> #8  0x00000012501a3338 [PAC] in tls13_server_certificate_recv (ctx=0x12a8be6180,
>     cbs=<optimized out>) at /usr/src/lib/libssl/tls13_client.c:605
> #9  0x0000001250185520 [PAC] in tls13_handshake_recv_action (ctx=0x12a8be6180,
>     action=0x12501d38a0 <state_machine+192>) at /usr/src/lib/libssl/tls13_handshake.c:549
> #10 tls13_handshake_perform (ctx=0x12a8be6180) at /usr/src/lib/libssl/tls13_handshake.c:412
> #11 0x000000125018acac [PAC] in tls13_legacy_connect (ssl=0x134c957a00)
>     at /usr/src/lib/libssl/tls13_legacy.c:466
> #12 0x000000125018a744 [PAC] in tls13_legacy_write_bytes (ssl=0x134c957a00, type=1284996096,
>     vbuf=0x1a, len=0) at /usr/src/lib/libssl/tls13_legacy.c:266
> #13 0x0000000e4f8e2c20 [PAC] in ?? ()
> #14 0x0000000e4f8d7e38 [PAC] in ?? ()
> #15 0x0000000e4f8c038c [PAC] in ?? ()
> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
> (gdb)
> 

-- 
jca