Bug#844534: uftp: FTBFS: encrypt_openssl.c:352:20: error: storage size of 'ctx' isn't known

2016-11-26 Thread Reiner Herrmann
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

2016-11-16 Thread Chris Lamb
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: ***