[Pkg-openssl-devel] Bug#846575: libssl-dev:amd64: struct dh_st is declared and used but nowhere defined

Edward Welbourne edward.welbourne at qt.io
Fri Dec 2 09:59:49 UTC 2016


Package: libssl-dev
Version: 1.1.0c-2
Severity: important

Dear Maintainer,

I'm building Qt from source and it has some code that accesses a
member of struct dh_st (accessed via its typedef name, DH); my
build failed (for the first time, just after upgrading libssl-dev)
because 

  error: invalid use of incomplete type ‘DH {aka struct dh_st}’

I find:

$ find /usr/include/openssl /usr/include/x86_64-linux-gnu/openssl \
   -type f -print0 | "xargs" -0 -e grep -wnH -e dh_st
/usr/include/openssl/ossl_typ.h:104:typedef struct dh_st DH;
/usr/include/openssl/dh.h:61:/* typedef struct dh_st DH; */
/usr/include/openssl/evp.h:920:struct dh_st;
/usr/include/openssl/evp.h:921:int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key);
/usr/include/openssl/evp.h:922:struct dh_st *EVP_PKEY_get0_DH(EVP_PKEY *pkey);
/usr/include/openssl/evp.h:923:struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey);

Note the declarations and uses; but no definition of the type.

It's possible this struct's internals are meant to be private and
1.1.0c-2 has finally enforced that - in which case Qt is at fault (and
I'll file a bug against Qt).  The offending code in Qt is in its
qtbase/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp

There are similar errors for
* EVP_PKEY {aka struct evp_pkey_st}, aggregate ‘EVP_CIPHER_CTX ctx’,
  DSA {aka dsa_st} and RSA {aka rsa_st} in
  qtbase/src/network/ssl/qsslkey_openssl.cpp
* X509 {aka struct x509_st} and EVP_PKEY {aka struct evp_pkey_st} in
  qtbase/src/network/ssl/qsslcertificate_openssl.cpp

Again, find | xargs grep reveals only declarations, no definitions.

-- System Information:
Debian Release: stretch/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.7.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libssl-dev:amd64 depends on:
ii  libssl1.1  1.1.0c-2

Versions of packages libssl-dev:amd64 recommends:
ii  libssl-doc  1.1.0c-2

libssl-dev:amd64 suggests no packages.

-- no debconf information



More information about the Pkg-openssl-devel mailing list