[openssl-dev] Core dump OpenSSL 1.1.0-pre5 during test (likely in 70-test_sslskewith0p.t)

Rainer Jung rainer.jung at kippdata.de
Tue Apr 19 18:40:58 UTC 2016


I get a core dump during test execution for 1.1.0-pre5. Test is 
test/recipes/70-test_sslskewith0p.t, platform is Solaris 10 Sparc.

The crash happens in BN_num_bits() (crypto/bn/bn_lib.c:211), because it 
is called with a NULL argument, which is then dereferenced.

The call comes from EVP_PKEY_bits() (crypto/evp/p_lib.c:78). There the 
key has pkey->ameth->pkey_bits equals to dh_bits(), so it calls 
dh_bits(pkey), which calls BN_num_bits(pkey->pkey.dh->p). Looking at 
pkey->pkey.dh we see:

(gdb) print *pkey->pkey.dh
$6 = {pad = 0, version = 0, p = 0x0, g = 0x0, length = 0, pub_key = 0x0, 
priv_key = 0x0, flags = 1025, method_mont_p = 0x0, q = 0x0, j = 0x0, 
seed = 0x0, seedlen = 0,
   counter = 0x0, references = 1, ex_data = {sk = 0x0}, meth = 0x2b45ec, 
engine = 0x0, lock = 0x2e2c68}

so p is actually NULL.

Further print stack:

#2  0x00072e54 in ssl_print_tmp_key (out=out at entry=0x2dae68, 
s=s at entry=0x2e1ab0) at apps/s_cb.c:478
#3  0x00075894 in print_stuff (bio=0x2dae68, s=s at entry=0x2e1ab0, 
full=full at entry=1) at apps/s_client.c:2625
#4  0x000784c8 in s_client_main (argc=<optimized out>, argv=<optimized 
out>) at apps/s_client.c:2521

Verbose run output:

$ HARNESS_VERBOSE=yes TESTS=test_sslskewith0p make test
( cd test; \
   SRCTOP=../. \
   BLDTOP=../. \
   EXE_EXT= \
   OPENSSL_ENGINES=.././engines \
     /usr/bin/env perl .././test/run_tests.pl test_sslskewith0p )
../test/recipes/70-test_sslskewith0p.t ..
1..1
Proxy started on port 4453
engine "ossltest" set.
Using default temp DH parameters
ACCEPT
engine "ossltest" set.
Connection opened
Received client packet
Packet length = 102
Processing flight 0
  Record 1 (client -> server)
   Content type: HANDSHAKE
   Version: TLS1.0
   Length: 97
   Message type: ClientHello
   Message Length: 93
     Client Version:771
     Session ID Len:0
     Ciphersuite len:4
     Compression Method Len:1
     Extensions Len:48

Forwarded packet length = 102
Received server packet
Packet length = 474
Processing flight 1
  Record 1 (server -> client)
   Content type: HANDSHAKE
   Version: TLS1.2
   Length: 61
   Message type: ServerHello
   Message Length: 57
     Server Version:771
     Session ID Len:0
     Ciphersuite:52
     Compression Method:0
     Extensions Len:17
  Record 2 (server -> client)
   Content type: HANDSHAKE
   Version: TLS1.2
   Length: 394
   Message type: ServerKeyExchange
   Message Length: 390
  Record 3 (server -> client)
   Content type: HANDSHAKE
   Version: TLS1.2
   Length: 4
   Message type: ServerHelloDone
   Message Length: 0

Forwarded packet length = 347
1:error:1416D066:SSL routines:tls_process_key_exchange:bad dh 
value:ssl/statem/statem_clnt.c:1568:
Received client packet
Packet length = 7
Processing flight 2
  Record 1 (client -> server)
   Content type: ALERT
   Version: TLS1.2
   Length: 2

Forwarded packet length = 7
Connection closed
Waiting for server process to close: 14314
    0 items in the session cache
    0 client connects (SSL_connect())
    0 client renegotiates (SSL_connect())
    0 client connects that finished
    1 server accepts (SSL_accept())
    0 server renegotiates (SSL_accept())
    0 server accepts that finished
    0 session cache hits
    0 session cache misses
    0 session cache timeouts
    0 callback cache hits
    0 cache full overflows (128 allowed)
CONNECTION FAILURE
1:error:1409441A:SSL 
routines:ssl3_read_bytes:reason(1050):ssl/record/rec_layer_s3.c:1467:SSL 
alert number 50
ok 1 - ServerKeyExchange with 0 p
Segmentation Fault - core dumped
ok
All tests successful.

Regards,

Rainer


More information about the openssl-dev mailing list