Re: lftp-4.7.6 compilation error - lftp_ssl.cc:1069:17: error: aggregate 'X509_OBJECT obj' has incomplete type and cannot be defined

Lars Viklund <[email protected]> Thu, 16 Feb 2017 11:13:15 +0100
Newsgroups gmane.network.lftp.user
Message-ID <[email protected]>
Hi,

Among other things, OpenSSL 1.1 apparently turns all previously 
inspectable structs opaque.
They now require you to hold them by pointer, use accessor functions to 
access their fields, and use the new/free functions to make/destroy them.

A quick Bing search revealed this wiki page: 
https://wiki.openssl.org/index.php/1.1_API_Changes

On 02/16/2017 10:52 AM, Justin Piszcz wrote:
> Hello,
>
> lftp-4.7.6 on Debian x86-64-
>
>
> make[2]: Entering directory '/home/user/lftp-4.7.6/src'
> /bin/bash ../libtool --silent  --tag=CXX   --mode=link g++  -O2 -Wall
> -Wwrite-strings -Woverloaded-virtual -fno-exceptions -fno-rtti
> -fno-implement-inlines -avoid-version -rpath
> /app/lftp-4.7.6-x86_64/lib/lftp/4.7.6 -s -o liblftp-pty.la  PtyShell.lo
> lftp_pty.lo SSH_Access.lo  -lutil -ltinfo -ldl
> ar: `u' modifier ignored since `D' is the default (see `U')
> /bin/bash ../libtool --silent  --tag=CXX   --mode=compile g++
> -DHAVE_CONFIG_H -I. -I../lib  -I../lib -I../trio  -I/usr/include    -O2
> -Wall -Wwrite-strings -Woverloaded-virtual -fno-exceptions -fno-rtti
> -fno-implement-inlines -MT liblftp_network_la-lftp_ssl.lo -MD -MP -MF
> .deps/liblftp_network_la-lftp_ssl.Tpo -c -o liblftp_network_la-lftp_ssl.lo
> `test -f 'lftp_ssl.cc' || echo './'`lftp_ssl.cc
> lftp_ssl.cc: In static member function 'static int
> lftp_ssl_openssl::verify_crl(X509_STORE_CTX*)':
> lftp_ssl.cc:1069:17: error: aggregate 'X509_OBJECT obj' has incomplete type
> and cannot be defined
>       X509_OBJECT obj;
>                   ^~~
> lftp_ssl.cc:1075:20: error: aggregate 'X509_STORE_CTX store_ctx' has
> incomplete type and cannot be defined
>       X509_STORE_CTX store_ctx;
>                      ^~~~~~~~~
> lftp_ssl.cc:1141:43: error: 'X509_OBJECT_free_contents' was not declared in
> this scope
>               X509_OBJECT_free_contents(&obj);
>                                             ^
> lftp_ssl.cc:1148:35: warning: 'ASN1_TIME*
> X509_CRL_get_nextUpdate(X509_CRL*)' is deprecated
> [-Wdeprecated-declarations]
>           i = X509_cmp_current_time(X509_CRL_get_nextUpdate(crl));
>                                     ^~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/openssl/x509_vfy.h:20:0,
>                   from /usr/include/openssl/x509.h:309,
>                   from /usr/include/openssl/ssl.h:50,
>                   from lftp_ssl.h:27,
>                   from lftp_ssl.cc:30:
> /usr/include/openssl/x509.h:709:1: note: declared here
>   DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl))
>   ^
> lftp_ssl.cc:1148:62: warning: 'ASN1_TIME*
> X509_CRL_get_nextUpdate(X509_CRL*)' is deprecated
> [-Wdeprecated-declarations]
>           i = X509_cmp_current_time(X509_CRL_get_nextUpdate(crl));
>                                                                ^
> In file included from /usr/include/openssl/x509_vfy.h:20:0,
>                   from /usr/include/openssl/x509.h:309,
>                   from /usr/include/openssl/ssl.h:50,
>                   from lftp_ssl.h:27,
>                   from lftp_ssl.cc:30:
> /usr/include/openssl/x509.h:709:1: note: declared here
>   DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl))
>   ^
> lftp_ssl.cc:1152:43: error: 'X509_OBJECT_free_contents' was not declared in
> this scope
>               X509_OBJECT_free_contents(&obj);
>                                             ^
> lftp_ssl.cc:1158:43: error: 'X509_OBJECT_free_contents' was not declared in
> this scope
>               X509_OBJECT_free_contents(&obj);
>                                             ^
> lftp_ssl.cc:1161:39: error: 'X509_OBJECT_free_contents' was not declared in
> this scope
>           X509_OBJECT_free_contents(&obj);
>                                         ^
> lftp_ssl.cc:1180:41: error: invalid use of incomplete type 'X509_REVOKED
> {aka struct x509_revoked_st}'
>               if (ASN1_INTEGER_cmp(revoked->serialNumber,
> X509_get_serialNumber(xs)) == 0) {
>                                           ^~
> In file included from /usr/include/openssl/crypto.h:31:0,
>                   from /usr/include/openssl/comp.h:16,
>                   from /usr/include/openssl/ssl.h:47,
>                   from lftp_ssl.h:27,
>                   from lftp_ssl.cc:30:
> /usr/include/openssl/ossl_typ.h:123:16: note: forward declaration of
> 'X509_REVOKED {aka struct x509_revoked_st}'
>   typedef struct x509_revoked_st X509_REVOKED;
>                  ^~~~~~~~~~~~~~~
> lftp_ssl.cc:1181:50: error: invalid use of incomplete type 'X509_REVOKED
> {aka struct x509_revoked_st}'
>                   serial = ASN1_INTEGER_get(revoked->serialNumber);
>                                                    ^~
> In file included from /usr/include/openssl/crypto.h:31:0,
>                   from /usr/include/openssl/comp.h:16,
>                   from /usr/include/openssl/ssl.h:47,
>                   from lftp_ssl.h:27,
>                   from lftp_ssl.cc:30:
> /usr/include/openssl/ossl_typ.h:123:16: note: forward declaration of
> 'X509_REVOKED {aka struct x509_revoked_st}'
>   typedef struct x509_revoked_st X509_REVOKED;
>                  ^~~~~~~~~~~~~~~
> lftp_ssl.cc:1189:47: error: 'X509_OBJECT_free_contents' was not declared in
> this scope
>                   X509_OBJECT_free_contents(&obj);
>                                                 ^
> lftp_ssl.cc:1193:39: error: 'X509_OBJECT_free_contents' was not declared in
> this scope
>           X509_OBJECT_free_contents(&obj);
>                                         ^
> lftp_ssl.cc: In member function 'void
> lftp_ssl_openssl::check_certificate()':
> lftp_ssl.cc:1425:38: warning: 'unsigned char*
> ASN1_STRING_data(ASN1_STRING*)' is deprecated [-Wdeprecated-declarations]
>           const char *altptr = (char *)ASN1_STRING_data(check->d.ia5);
>                                        ^~~~~~~~~~~~~~~~
> In file included from /usr/include/openssl/bn.h:31:0,
>                   from /usr/include/openssl/asn1.h:24,
>                   from /usr/include/openssl/objects.h:916,
>                   from /usr/include/openssl/evp.h:27,
>                   from /usr/include/openssl/x509.h:23,
>                   from /usr/include/openssl/ssl.h:50,
>                   from lftp_ssl.h:27,
>                   from lftp_ssl.cc:30:
> /usr/include/openssl/asn1.h:553:1: note: declared here
>   DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
>   ^
> lftp_ssl.cc:1425:67: warning: 'unsigned char*
> ASN1_STRING_data(ASN1_STRING*)' is deprecated [-Wdeprecated-declarations]
>           const char *altptr = (char *)ASN1_STRING_data(check->d.ia5);
>                                                                     ^
> In file included from /usr/include/openssl/bn.h:31:0,
>                   from /usr/include/openssl/asn1.h:24,
>                   from /usr/include/openssl/objects.h:916,
>                   from /usr/include/openssl/evp.h:27,
>                   from /usr/include/openssl/x509.h:23,
>                   from /usr/include/openssl/ssl.h:50,
>                   from lftp_ssl.h:27,
>                   from lftp_ssl.cc:30:
> /usr/include/openssl/asn1.h:553:1: note: declared here
>   DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
>   ^
> lftp_ssl.cc:1504:31: warning: 'unsigned char*
> ASN1_STRING_data(ASN1_STRING*)' is deprecated [-Wdeprecated-declarations]
>                 memcpy(peer_CN, ASN1_STRING_data(tmp), j);
>                                 ^~~~~~~~~~~~~~~~
> In file included from /usr/include/openssl/bn.h:31:0,
>                   from /usr/include/openssl/asn1.h:24,
>                   from /usr/include/openssl/objects.h:916,
>                   from /usr/include/openssl/evp.h:27,
>                   from /usr/include/openssl/x509.h:23,
>                   from /usr/include/openssl/ssl.h:50,
>                   from lftp_ssl.h:27,
>                   from lftp_ssl.cc:30:
> /usr/include/openssl/asn1.h:553:1: note: declared here
>   DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
>   ^
> lftp_ssl.cc:1504:51: warning: 'unsigned char*
> ASN1_STRING_data(ASN1_STRING*)' is deprecated [-Wdeprecated-declarations]
>                 memcpy(peer_CN, ASN1_STRING_data(tmp), j);
>                                                     ^
> In file included from /usr/include/openssl/bn.h:31:0,
>                   from /usr/include/openssl/asn1.h:24,
>                   from /usr/include/openssl/objects.h:916,
>                   from /usr/include/openssl/evp.h:27,
>                   from /usr/include/openssl/x509.h:23,
>                   from /usr/include/openssl/ssl.h:50,
>                   from lftp_ssl.h:27,
>                   from lftp_ssl.cc:30:
> /usr/include/openssl/asn1.h:553:1: note: declared here
>   DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
>   ^
> Makefile:2258: recipe for target 'liblftp_network_la-lftp_ssl.lo' failed
> make[2]: *** [liblftp_network_la-lftp_ssl.lo] Error 1
> make[2]: Leaving directory '/home/user/lftp-4.7.6/src'
> Makefile:1639: recipe for target 'all-recursive' failed
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory '/home/user/lftp-4.7.6'
> Makefile:1584: recipe for target 'all' failed
> make: *** [all] Error 2
> Command exited with non-zero status 2
> 0.76user 0.07system 0:00.90elapsed 92%CPU (0avgtext+0avgdata
> 48060maxresident)k
> 208inputs+192outputs (5major+40844minor)pagefaults 0swaps
>
> Justin.
>
> _______________________________________________
> lftp mailing list
> [email protected]
> http://univ.uniyar.ac.ru/mailman/listinfo/lftp

_______________________________________________
lftp mailing list
[email protected]
http://univ.uniyar.ac.ru/mailman/listinfo/lftp