Bug#844534: uftp: FTBFS: encrypt_openssl.c:352:20: error: storage size of 'ctx' isn't known
Control: tags -1 + patch Hi, attached is a patch for compatibility with OpenSSL 1.1. Regards, Reiner diff --git a/debian/patches/openssl1.1.patch b/debian/patches/openssl1.1.patch new file mode 100644 index 000..960d827 --- /dev/null +++ b/debian/patches/openssl1.1.patch @@ -0,0 +1,400 @@ +Author: Reiner Herrmann+Description: Fix compatibility with OpenSSL 1.1 +Bug-Debian: https://bugs.debian.org/844534 + +--- a/encrypt_openssl.c b/encrypt_openssl.c +@@ -349,7 +349,7 @@ + const unsigned char *src, unsigned int srclen, + unsigned char *dest, unsigned int *destlen) + { +-EVP_CIPHER_CTX ctx; ++EVP_CIPHER_CTX *ctx; + const EVP_CIPHER *cipher = get_cipher(keytype); + int mode, len; + +@@ -358,32 +358,32 @@ + return 0; + } + mode = EVP_CIPHER_mode(cipher); +-EVP_CIPHER_CTX_init(); +-if (!EVP_EncryptInit_ex(, cipher, NULL, NULL, NULL)) { ++ctx = EVP_CIPHER_CTX_new(); ++if (!EVP_EncryptInit_ex(ctx, cipher, NULL, NULL, NULL)) { + log_ssl_err("EncryptInit for cipher failed"); + return 0; + } + #ifdef EVP_CIPH_GCM_MODE + if (mode == EVP_CIPH_GCM_MODE) { +-if (!EVP_CIPHER_CTX_ctrl(, EVP_CTRL_GCM_SET_IVLEN, GCM_IV_LEN, 0)) { ++if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, GCM_IV_LEN, 0)) { + log_ssl_err("EVP_CIPHER_CTX_ctrl for IVLEN failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } + } else if (mode == EVP_CIPH_CCM_MODE) { +-if (!EVP_CIPHER_CTX_ctrl(, EVP_CTRL_CCM_SET_IVLEN, CCM_IV_LEN, 0)) { ++if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_IVLEN, CCM_IV_LEN, 0)) { + log_ssl_err("EVP_CIPHER_CTX_ctrl for IVLEN failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } +-if (!EVP_CIPHER_CTX_ctrl(, EVP_CTRL_CCM_SET_TAG, CCM_TAG_LEN, 0)) { ++if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_TAG, CCM_TAG_LEN, 0)) { + log_ssl_err("EVP_CIPHER_CTX_ctrl for tag len failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } + } + #endif +-if (!EVP_EncryptInit_ex(, NULL, NULL, key, IV)) { ++if (!EVP_EncryptInit_ex(ctx, NULL, NULL, key, IV)) { + log_ssl_err("EncryptInit for key/IV failed"); + return 0; + } +@@ -391,53 +391,53 @@ + #ifdef EVP_CIPH_GCM_MODE + if ((mode == EVP_CIPH_GCM_MODE) || (mode == EVP_CIPH_CCM_MODE)) { + if (mode == EVP_CIPH_CCM_MODE) { +-if (!EVP_EncryptUpdate(, NULL, , NULL, srclen)) { ++if (!EVP_EncryptUpdate(ctx, NULL, , NULL, srclen)) { + log_ssl_err("EncryptUpdate for datalen failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } + } + if ((aad != NULL) && (aadlen > 0)) { +-if (!EVP_EncryptUpdate(, NULL, , aad, aadlen)) { ++if (!EVP_EncryptUpdate(ctx, NULL, , aad, aadlen)) { + log_ssl_err("EncryptUpdate for authdata failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } + } + } + #endif +-if (!EVP_EncryptUpdate(, dest, , src, srclen)) { ++if (!EVP_EncryptUpdate(ctx, dest, , src, srclen)) { + log_ssl_err("EncryptUpdate for data failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } + *destlen = len; +-if (!EVP_EncryptFinal_ex(, dest + *destlen, )) { ++if (!EVP_EncryptFinal_ex(ctx, dest + *destlen, )) { + log_ssl_err("EncryptFinal failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } + #ifdef EVP_CIPH_GCM_MODE + if (mode == EVP_CIPH_GCM_MODE) { +-if (!EVP_CIPHER_CTX_ctrl(, EVP_CTRL_GCM_GET_TAG, GCM_TAG_LEN, ++if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_GET_TAG, GCM_TAG_LEN, + dest + *destlen)) { + log_ssl_err("EVP_CIPHER_CTX_ctrl for get tag failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } + len += GCM_TAG_LEN; + } else if (mode == EVP_CIPH_CCM_MODE) { +-if (!EVP_CIPHER_CTX_ctrl(, EVP_CTRL_CCM_GET_TAG, CCM_TAG_LEN, ++if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_GET_TAG, CCM_TAG_LEN, + dest + *destlen)) { + log_ssl_err("EVP_CIPHER_CTX_ctrl for get tag failed"); +-EVP_CIPHER_CTX_cleanup(); ++EVP_CIPHER_CTX_free(ctx); + return 0; + } + len += CCM_TAG_LEN; + } + #endif + *destlen += len; +-EVP_CIPHER_CTX_cleanup(); ++
Bug#844534: uftp: FTBFS: encrypt_openssl.c:352:20: error: storage size of 'ctx' isn't known
Source: uftp Version: 4.9.2-1 Severity: serious Justification: fails to build from source User: reproducible-bui...@lists.alioth.debian.org Usertags: ftbfs X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org Dear Maintainer, uftp fails to build from source in unstable/amd64: […] make -j1 make[1]: Entering directory '/home/lamby/temp/cdt.20161116173956.JevpBpJbR0.db.uftp/uftp-4.9.2' cc -g -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wformat=2 -Wwrite-strings -Wpointer-arith -Wcast-qual -Wshadow -Wno-missing-field-initializers -Wstrict-prototypes -Winline -Wbad-function-cast -DHAS_GETIFADDRS -g -O2 -fdebug-prefix-map=/home/lamby/temp/cdt.20161116173956.JevpBpJbR0.db.uftp/uftp-4.9.2=. -fstack-protector-strong -Wformat -Werror=format-security `getconf LFS_CFLAGS` -c uftp_common.c uftp_common.c: In function 'multicast_join': uftp_common.c:1636:17: warning: 'level' may be used uninitialized in this function [-Wmaybe-uninitialized] if (setsockopt(s, level, MCAST_JOIN_GROUP, ^~ (char *), sizeof(greq)) == -1) { uftp_common.c: In function 'multicast_leave': uftp_common.c:1700:21: warning: 'level' may be used uninitialized in this function [-Wmaybe-uninitialized] if (setsockopt(s, level, MCAST_LEAVE_SOURCE_GROUP, ^~ (char *), sizeof(gsreq)) == -1) { ~~ cc -g -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wformat=2 -Wwrite-strings -Wpointer-arith -Wcast-qual -Wshadow -Wno-missing-field-initializers -Wstrict-prototypes -Winline -Wbad-function-cast -DHAS_GETIFADDRS -g -O2 -fdebug-prefix-map=/home/lamby/temp/cdt.20161116173956.JevpBpJbR0.db.uftp/uftp-4.9.2=. -fstack-protector-strong -Wformat -Werror=format-security `getconf LFS_CFLAGS` -c encrypt_openssl.c encrypt_openssl.c: In function 'encrypt_block': encrypt_openssl.c:352:20: error: storage size of 'ctx' isn't known EVP_CIPHER_CTX ctx; ^~~ encrypt_openssl.c:352:20: warning: unused variable 'ctx' [-Wunused-variable] encrypt_openssl.c: In function 'decrypt_block': encrypt_openssl.c:456:20: error: storage size of 'ctx' isn't known EVP_CIPHER_CTX ctx; ^~~ encrypt_openssl.c:456:20: warning: unused variable 'ctx' [-Wunused-variable] encrypt_openssl.c: In function 'hash': encrypt_openssl.c:572:16: error: storage size of 'hashctx' isn't known EVP_MD_CTX hashctx; ^~~ encrypt_openssl.c:582:9: warning: implicit declaration of function 'EVP_MD_CTX_cleanup' [-Wimplicit-function-declaration] EVP_MD_CTX_cleanup(); ^~ encrypt_openssl.c:572:16: warning: unused variable 'hashctx' [-Wunused-variable] EVP_MD_CTX hashctx; ^~~ In file included from /usr/include/openssl/asn1.h:24:0, from /usr/include/openssl/objects.h:916, from /usr/include/openssl/evp.h:27, from encrypt_openssl.c:39: encrypt_openssl.c: In function 'create_ECDSA_sig': encrypt_openssl.c:793:36: error: dereferencing pointer to incomplete type 'ECDSA_SIG {aka struct ECDSA_SIG_st}' sval = rval + BN_num_bytes(_sig->r); ^ encrypt_openssl.c: In function 'import_RSA_key': encrypt_openssl.c:926:16: error: dereferencing pointer to incomplete type 'RSA {aka struct rsa_st}' if (((*rsa)->e = BN_bin2bn((const unsigned char *)>exponent, ^~ In file included from /usr/include/openssl/asn1.h:24:0, from /usr/include/openssl/objects.h:916, from /usr/include/openssl/evp.h:27, from encrypt_openssl.c:39: encrypt_openssl.c: In function 'export_RSA_key': encrypt_openssl.c:954:25: error: dereferencing pointer to incomplete type 'RSA {aka struct rsa_st}' if (BN_num_bytes(rsa->e) > sizeof(bin_exponent)) { ^ encrypt_openssl.c: In function 'gen_RSA_key': encrypt_openssl.c:1078:5: warning: 'RSA_generate_key' is deprecated [-Wdeprecated-declarations] if ((rsa = RSA_generate_key(bits ? bits : DEF_RSA_LEN, ^~ In file included from /usr/include/openssl/rsa.h:13:0, from encrypt_openssl.c:43: /usr/include/openssl/rsa.h:193:1: note: declared here DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void ^ makefile:195: recipe for target 'encrypt_openssl.o' failed make[1]: *** [encrypt_openssl.o] Error 1 make[1]: Leaving directory '/home/lamby/temp/cdt.20161116173956.JevpBpJbR0.db.uftp/uftp-4.9.2' dh_auto_build: make -j1 returned exit code 2 debian/rules:7: recipe for target 'build' failed make: ***