Control: tags 828282 + patch Control: tags 828282 + pending Dear maintainer,
I've prepared an NMU for dmg2img (versioned as 1.6.5-1.1) and uploaded it to DELAYED/2. Please feel free to tell me if I should delay it longer. Please note that the uploaded diff is slightly different to the one I previously attached, as it's now also still compatible with OpenSSL 1.0. Regards. Reiner
diff -Nru dmg2img-1.6.5/debian/changelog dmg2img-1.6.5/debian/changelog --- dmg2img-1.6.5/debian/changelog 2013-11-16 06:30:06.000000000 +0100 +++ dmg2img-1.6.5/debian/changelog 2016-11-28 19:55:28.000000000 +0100 @@ -1,3 +1,10 @@ +dmg2img (1.6.5-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * Add patch to build with OpenSSL 1.1. (Closes: #828282) + + -- Reiner Herrmann <rei...@reiner-h.de> Mon, 28 Nov 2016 19:55:28 +0100 + dmg2img (1.6.5-1) unstable; urgency=low * New upstream version (Closes: #688136). diff -Nru dmg2img-1.6.5/debian/patches/openssl1.1.patch dmg2img-1.6.5/debian/patches/openssl1.1.patch --- dmg2img-1.6.5/debian/patches/openssl1.1.patch 1970-01-01 01:00:00.000000000 +0100 +++ dmg2img-1.6.5/debian/patches/openssl1.1.patch 2016-11-28 19:54:19.000000000 +0100 @@ -0,0 +1,153 @@ +Author: Reiner Herrmann <rei...@reiner-h.de> +Description: Fix building with OpenSSL 1.1 +Bug-Debian: https://bugs.debian.org/828282 + +--- a/vfdecrypt.c ++++ b/vfdecrypt.c +@@ -183,7 +183,7 @@ + pwhdr->encrypted_keyblob_size = htonl(pwhdr->encrypted_keyblob_size); + } + +-HMAC_CTX hmacsha1_ctx; ++HMAC_CTX *hmacsha1_ctx = NULL; + AES_KEY aes_decrypt_key; + int CHUNK_SIZE=4096; // default + +@@ -196,9 +196,9 @@ + unsigned int mdLen; + + chunk_no = OSSwapHostToBigInt32(chunk_no); +- HMAC_Init_ex(&hmacsha1_ctx, NULL, 0, NULL, NULL); +- HMAC_Update(&hmacsha1_ctx, (void *) &chunk_no, sizeof(uint32_t)); +- HMAC_Final(&hmacsha1_ctx, mdResult, &mdLen); ++ HMAC_Init_ex(hmacsha1_ctx, NULL, 0, NULL, NULL); ++ HMAC_Update(hmacsha1_ctx, (void *) &chunk_no, sizeof(uint32_t)); ++ HMAC_Final(hmacsha1_ctx, mdResult, &mdLen); + memcpy(iv, mdResult, CIPHER_BLOCKSIZE); + } + +@@ -212,47 +212,47 @@ + /* DES3-EDE unwrap operation loosely based on to RFC 2630, section 12.6 + * wrapped_key has to be 40 bytes in length. */ + int apple_des3_ede_unwrap_key(uint8_t *wrapped_key, int wrapped_key_len, uint8_t *decryptKey, uint8_t *unwrapped_key) { +- EVP_CIPHER_CTX ctx; ++ EVP_CIPHER_CTX *ctx; + uint8_t *TEMP1, *TEMP2, *CEKICV; + uint8_t IV[8] = { 0x4a, 0xdd, 0xa2, 0x2c, 0x79, 0xe8, 0x21, 0x05 }; + int outlen, tmplen, i; + +- EVP_CIPHER_CTX_init(&ctx); ++ ctx = EVP_CIPHER_CTX_new(); + /* result of the decryption operation shouldn't be bigger than ciphertext */ + TEMP1 = malloc(wrapped_key_len); + TEMP2 = malloc(wrapped_key_len); + CEKICV = malloc(wrapped_key_len); + /* uses PKCS#7 padding for symmetric key operations by default */ +- EVP_DecryptInit_ex(&ctx, EVP_des_ede3_cbc(), NULL, decryptKey, IV); ++ EVP_DecryptInit_ex(ctx, EVP_des_ede3_cbc(), NULL, decryptKey, IV); + +- if(!EVP_DecryptUpdate(&ctx, TEMP1, &outlen, wrapped_key, wrapped_key_len)) { ++ if(!EVP_DecryptUpdate(ctx, TEMP1, &outlen, wrapped_key, wrapped_key_len)) { + fprintf(stderr, "internal error (1) during key unwrap operation!\n"); + return(-1); + } +- if(!EVP_DecryptFinal_ex(&ctx, TEMP1 + outlen, &tmplen)) { ++ if(!EVP_DecryptFinal_ex(ctx, TEMP1 + outlen, &tmplen)) { + fprintf(stderr, "internal error (2) during key unwrap operation!\n"); + return(-1); + } + outlen += tmplen; +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + + /* reverse order of TEMP3 */ + for(i = 0; i < outlen; i++) TEMP2[i] = TEMP1[outlen - i - 1]; + +- EVP_CIPHER_CTX_init(&ctx); ++ ctx = EVP_CIPHER_CTX_new(); + /* uses PKCS#7 padding for symmetric key operations by default */ +- EVP_DecryptInit_ex(&ctx, EVP_des_ede3_cbc(), NULL, decryptKey, TEMP2); +- if(!EVP_DecryptUpdate(&ctx, CEKICV, &outlen, TEMP2+8, outlen-8)) { ++ EVP_DecryptInit_ex(ctx, EVP_des_ede3_cbc(), NULL, decryptKey, TEMP2); ++ if(!EVP_DecryptUpdate(ctx, CEKICV, &outlen, TEMP2+8, outlen-8)) { + fprintf(stderr, "internal error (3) during key unwrap operation!\n"); + return(-1); + } +- if(!EVP_DecryptFinal_ex(&ctx, CEKICV + outlen, &tmplen)) { ++ if(!EVP_DecryptFinal_ex(ctx, CEKICV + outlen, &tmplen)) { + fprintf(stderr, "internal error (4) during key unwrap operation!\n"); + return(-1); + } + + outlen += tmplen; +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + + memcpy(unwrapped_key, CEKICV+4, outlen-4); + free(TEMP1); +@@ -279,7 +279,7 @@ + int unwrap_v2_header(char *passphrase, cencrypted_v2_pwheader *header, uint8_t *aes_key, uint8_t *hmacsha1_key) { + /* derived key is a 3DES-EDE key */ + uint8_t derived_key[192/8]; +- EVP_CIPHER_CTX ctx; ++ EVP_CIPHER_CTX *ctx; + uint8_t *TEMP1; + int outlen, tmplen; + +@@ -288,22 +288,22 @@ + + print_hex(derived_key, 192/8); + +- EVP_CIPHER_CTX_init(&ctx); ++ ctx = EVP_CIPHER_CTX_new(); + /* result of the decryption operation shouldn't be bigger than ciphertext */ + TEMP1 = malloc(header->encrypted_keyblob_size); + /* uses PKCS#7 padding for symmetric key operations by default */ +- EVP_DecryptInit_ex(&ctx, EVP_des_ede3_cbc(), NULL, derived_key, header->blob_enc_iv); ++ EVP_DecryptInit_ex(ctx, EVP_des_ede3_cbc(), NULL, derived_key, header->blob_enc_iv); + +- if(!EVP_DecryptUpdate(&ctx, TEMP1, &outlen, header->encrypted_keyblob, header->encrypted_keyblob_size)) { ++ if(!EVP_DecryptUpdate(ctx, TEMP1, &outlen, header->encrypted_keyblob, header->encrypted_keyblob_size)) { + fprintf(stderr, "internal error (1) during key unwrap operation!\n"); + return(-1); + } +- if(!EVP_DecryptFinal_ex(&ctx, TEMP1 + outlen, &tmplen)) { ++ if(!EVP_DecryptFinal_ex(ctx, TEMP1 + outlen, &tmplen)) { + fprintf(stderr, "internal error (2) during key unwrap operation!\n"); + return(-1); + } + outlen += tmplen; +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + memcpy(aes_key, TEMP1, 16); + memcpy(hmacsha1_key, TEMP1, 20); + +@@ -446,8 +446,13 @@ + CHUNK_SIZE = v2header.blocksize; + } + +- HMAC_CTX_init(&hmacsha1_ctx); +- HMAC_Init_ex(&hmacsha1_ctx, hmacsha1_key, sizeof(hmacsha1_key), EVP_sha1(), NULL); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ hmacsha1_ctx = OPENSSL_malloc(sizeof(*hmacsha1_ctx)); ++ HMAC_CTX_init(hmacsha1_ctx); ++#else ++ hmacsha1_ctx = HMAC_CTX_new(); ++#endif ++ HMAC_Init_ex(hmacsha1_ctx, hmacsha1_key, sizeof(hmacsha1_key), EVP_sha1(), NULL); + AES_set_decrypt_key(aes_key, CIPHER_KEY_LENGTH * 8, &aes_decrypt_key); + + if (verbose >= 1) { +@@ -470,6 +475,12 @@ + } + fwrite(outbuf, CHUNK_SIZE, 1, out); + } ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ HMAC_CTX_cleanup(hmacsha1_ctx); ++ OPENSSL_free(hmacsha1_ctx); ++#else ++ HMAC_CTX_free(hmacsha1_ctx); ++#endif + + if (verbose) fprintf(stderr, "%"PRIX32" chunks written\n", chunk_no); + return(0); diff -Nru dmg2img-1.6.5/debian/patches/series dmg2img-1.6.5/debian/patches/series --- dmg2img-1.6.5/debian/patches/series 2010-05-27 11:03:55.000000000 +0200 +++ dmg2img-1.6.5/debian/patches/series 2016-11-26 14:47:41.000000000 +0100 @@ -1 +1,2 @@ dont-strip.patch +openssl1.1.patch
signature.asc
Description: Digital signature