# Fedora 36+ and EL9+ includes OpenSSL 3.0. This introduces a lot of # deprecation warnings. Locally mute these warning so that they don't cause # errors. diff -Naur bareos-Release-21.0.0.orig/core/src/dird/inc_conf.cc bareos-Release-21.0.0/core/src/dird/inc_conf.cc --- bareos-Release-21.0.0.orig/core/src/dird/inc_conf.cc 2022-03-09 09:03:32.065233907 +0100 +++ bareos-Release-21.0.0/core/src/dird/inc_conf.cc 2022-03-09 10:03:14.079745445 +0100 @@ -820,7 +820,10 @@ case BCT_QUOTED_STRING: { FilesetResource* res_fs = GetStaticFilesetResource(); if (res_fs->have_MD5) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Update(&res_fs->md5c, (unsigned char*)lc->str, lc->str_len); +#pragma GCC diagnostic pop } if (res_incexe->name_list.size() == 0) { @@ -873,7 +876,10 @@ FilesetResource* res_fs = GetStaticFilesetResource(); if (res_fs->have_MD5) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Update(&res_fs->md5c, (unsigned char*)lc->str, lc->str_len); +#pragma GCC diagnostic pop } if (res_incexe->plugin_list.size() == 0) { res_incexe->plugin_list.init(10, true); @@ -929,7 +935,10 @@ if (pass == 1) { res_incexe = new IncludeExcludeItem; } if (!res_fs->have_MD5) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&res_fs->md5c); +#pragma GCC diagnostic pop res_fs->have_MD5 = true; } res_fs->new_include = true; diff -Naur bareos-Release-21.0.0.orig/core/src/dird/job.cc bareos-Release-21.0.0/core/src/dird/job.cc --- bareos-Release-21.0.0.orig/core/src/dird/job.cc 2022-03-09 09:03:32.065233907 +0100 +++ bareos-Release-21.0.0/core/src/dird/job.cc 2022-03-09 10:09:30.636596791 +0100 @@ -1351,7 +1351,10 @@ MD5_CTX md5c; unsigned char digest[16]; /* MD5 digest length */ memcpy(&md5c, &jcr->impl->res.fileset->md5c, sizeof(md5c)); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Final(digest, &md5c); +#pragma GCC diagnostic pop /* * Keep the flag (last arg) set to false otherwise old FileSets will * get new MD5 sums and the user will get Full backups on everything diff -Naur bareos-Release-21.0.0.orig/core/src/droplet/libdroplet/src/backend/s3/reqbuilder.c bareos-Release-21.0.0/core/src/droplet/libdroplet/src/backend/s3/reqbuilder.c --- bareos-Release-21.0.0.orig/core/src/droplet/libdroplet/src/backend/s3/reqbuilder.c 2022-03-09 09:03:32.069233916 +0100 +++ bareos-Release-21.0.0/core/src/droplet/libdroplet/src/backend/s3/reqbuilder.c 2022-03-09 09:40:31.490561578 +0100 @@ -330,9 +330,12 @@ goto end; } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&ctx); MD5_Update(&ctx, req->data_buf, req->data_len); MD5_Final(digest, &ctx); +#pragma GCC diagnostic pop b64_digest_len = dpl_base64_encode(digest, MD5_DIGEST_LENGTH, (u_char*)b64_digest); diff -Naur bareos-Release-21.0.0.orig/core/src/droplet/libdroplet/src/uks.c bareos-Release-21.0.0/core/src/droplet/libdroplet/src/uks.c --- bareos-Release-21.0.0.orig/core/src/droplet/libdroplet/src/uks.c 2022-03-09 09:03:32.069233916 +0100 +++ bareos-Release-21.0.0/core/src/droplet/libdroplet/src/uks.c 2022-03-09 09:37:41.132118775 +0100 @@ -295,9 +295,12 @@ off += DPL_UKS_OID_NBITS; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&ctx); MD5_Update(&ctx, entropy, sizeof(entropy)); MD5_Final(hash, &ctx); +#pragma GCC diagnostic pop for (i = 0; i < DPL_UKS_HASH_NBITS; i++) { if (hash[i / 8] & 1 << (i % 8)) diff -Naur bareos-Release-21.0.0.orig/core/src/droplet/libdroplet/src/utils.c bareos-Release-21.0.0/core/src/droplet/libdroplet/src/utils.c --- bareos-Release-21.0.0.orig/core/src/droplet/libdroplet/src/utils.c 2022-03-09 09:03:32.069233916 +0100 +++ bareos-Release-21.0.0/core/src/droplet/libdroplet/src/utils.c 2022-03-09 09:35:48.302843481 +0100 @@ -468,7 +468,10 @@ HMAC_CTX ctx; #else HMAC_CTX* ctx; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" ctx = HMAC_CTX_new(); +#pragma GCC diagnostic pop #endif u_int digest_len; @@ -479,9 +482,12 @@ HMAC_Final(&ctx, (u_char*)digest_buf, &digest_len); HMAC_CTX_cleanup(&ctx); #else +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" HMAC_Init_ex(ctx, key_buf, key_len, md, NULL); HMAC_Update(ctx, (u_char*)data_buf, data_len); HMAC_Final(ctx, (u_char*)digest_buf, &digest_len); +#pragma GCC diagnostic pop #endif return digest_len; @@ -542,9 +548,12 @@ { SHA256_CTX ctx; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" SHA256_Init(&ctx); SHA256_Update(&ctx, data_buf, data_len); SHA256_Final(digest_buf, &ctx); +#pragma GCC diagnostic pop } /**/ diff -Naur bareos-Release-21.0.0.orig/core/src/lib/crypto_none.cc bareos-Release-21.0.0/core/src/lib/crypto_none.cc --- bareos-Release-21.0.0.orig/core/src/lib/crypto_none.cc 2022-03-09 09:03:32.073233925 +0100 +++ bareos-Release-21.0.0/core/src/lib/crypto_none.cc 2022-03-09 10:02:42.859673131 +0100 @@ -57,7 +57,10 @@ switch (type) { case CRYPTO_DIGEST_MD5: +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&digest->md5); +#pragma GCC diagnostic pop break; case CRYPTO_DIGEST_SHA1: SHA1Init(&digest->sha1); @@ -76,7 +79,10 @@ switch (digest->type) { case CRYPTO_DIGEST_MD5: /* Doesn't return anything ... */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Update(&digest->md5, (unsigned char*)data, length); +#pragma GCC diagnostic pop return true; case CRYPTO_DIGEST_SHA1: /* Doesn't return anything ... */ @@ -96,7 +102,10 @@ assert(*length >= CRYPTO_DIGEST_MD5_SIZE); *length = CRYPTO_DIGEST_MD5_SIZE; /* Doesn't return anything ... */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Final((unsigned char*)dest, &digest->md5); +#pragma GCC diagnostic pop return true; case CRYPTO_DIGEST_SHA1: /* Guard against programmer error by either the API client or diff -Naur bareos-Release-21.0.0.orig/core/src/lib/crypto_nss.cc bareos-Release-21.0.0/core/src/lib/crypto_nss.cc --- bareos-Release-21.0.0.orig/core/src/lib/crypto_nss.cc 2022-03-09 09:03:32.073233925 +0100 +++ bareos-Release-21.0.0/core/src/lib/crypto_nss.cc 2022-03-09 10:02:07.909592178 +0100 @@ -58,7 +58,10 @@ switch (type) { case CRYPTO_DIGEST_MD5: +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&digest->md5); +#pragma GCC diagnostic pop break; case CRYPTO_DIGEST_SHA1: SHA1Init(&digest->sha1); @@ -77,7 +80,10 @@ switch (digest->type) { case CRYPTO_DIGEST_MD5: /* Doesn't return anything ... */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Update(&digest->md5, (unsigned char*)data, length); +#pragma GCC diagnostic pop return true; case CRYPTO_DIGEST_SHA1: /* Doesn't return anything ... */ @@ -97,7 +103,10 @@ assert(*length >= CRYPTO_DIGEST_MD5_SIZE); *length = CRYPTO_DIGEST_MD5_SIZE; /* Doesn't return anything ... */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Final((unsigned char*)dest, &digest->md5); +#pragma GCC diagnostic pop return true; case CRYPTO_DIGEST_SHA1: /* Guard against programmer error by either the API client or diff -Naur bareos-Release-21.0.0.orig/core/src/lib/crypto_openssl.cc bareos-Release-21.0.0/core/src/lib/crypto_openssl.cc --- bareos-Release-21.0.0.orig/core/src/lib/crypto_openssl.cc 2022-03-09 09:03:32.073233925 +0100 +++ bareos-Release-21.0.0/core/src/lib/crypto_openssl.cc 2022-03-09 09:45:32.411339279 +0100 @@ -1188,9 +1188,12 @@ /* Encrypt the session key */ ekey = (unsigned char*)malloc(EVP_PKEY_size(keypair->pubkey)); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" if ((ekey_len = EVP_PKEY_encrypt(ekey, cs->session_key, cs->session_key_len, keypair->pubkey)) <= 0) { +#pragma GCC diagnostic pop /* OpenSSL failure */ RecipientInfo_free(ri); CryptoSessionFree(cs); @@ -1314,9 +1317,12 @@ /* Allocate sufficient space for the largest possible decrypted data */ cs->session_key = (unsigned char*)malloc(EVP_PKEY_size(keypair->privkey)); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" cs->session_key_len = EVP_PKEY_decrypt( cs->session_key, M_ASN1_STRING_data(ri->encryptedKey), M_ASN1_STRING_length(ri->encryptedKey), keypair->privkey); +#pragma GCC diagnostic pop if (cs->session_key_len <= 0) { OpensslPostErrors(M_ERROR, _("Failure decrypting the session key")); @@ -1502,8 +1508,11 @@ ENGINE_load_pk11(); # else // Load all the builtin engines. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" ENGINE_load_builtin_engines(); ENGINE_register_all_complete(); +#pragma GCC diagnostic pop # endif crypto_initialized = true; diff -Naur bareos-Release-21.0.0.orig/core/src/lib/crypto_wrap.cc bareos-Release-21.0.0/core/src/lib/crypto_wrap.cc --- bareos-Release-21.0.0.orig/core/src/lib/crypto_wrap.cc 2022-03-09 09:03:32.073233925 +0100 +++ bareos-Release-21.0.0/core/src/lib/crypto_wrap.cc 2022-03-09 09:49:02.654850824 +0100 @@ -70,7 +70,10 @@ memcpy(r, plain, 8 * n); # ifdef HAVE_OPENSSL +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" AES_set_encrypt_key(kek, 128, &key); +#pragma GCC diagnostic pop # endif /* @@ -87,7 +90,10 @@ memcpy(b, a, 8); memcpy(b + 8, r, 8); # ifdef HAVE_OPENSSL +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" AES_encrypt(b, b, &key); +#pragma GCC diagnostic pop # endif memcpy(a, b, 8); a[7] ^= n * j + i; @@ -123,7 +129,10 @@ memcpy(r, cipher + 8, 8 * n); # ifdef HAVE_OPENSSL +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" AES_set_decrypt_key(kek, 128, &key); +#pragma GCC diagnostic pop # endif /* @@ -142,7 +151,10 @@ memcpy(b + 8, r, 8); # ifdef HAVE_OPENSSL +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" AES_decrypt(b, b, &key); +#pragma GCC diagnostic pop # endif memcpy(a, b, 8); memcpy(r, b + 8, 8); diff -Naur bareos-Release-21.0.0.orig/core/src/lib/hmac.cc bareos-Release-21.0.0/core/src/lib/hmac.cc --- bareos-Release-21.0.0.orig/core/src/lib/hmac.cc 2022-03-09 09:03:32.073233925 +0100 +++ bareos-Release-21.0.0/core/src/lib/hmac.cc 2022-03-09 09:51:43.912235436 +0100 @@ -48,9 +48,12 @@ if (key_len > PAD_LEN) { MD5_CTX md5key; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&md5key); MD5_Update(&md5key, key, key_len); MD5_Final(keysig, &md5key); +#pragma GCC diagnostic pop key = keysig; key_len = SIG_LEN; @@ -80,16 +83,22 @@ } /* perform inner MD5 */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&md5c); /* start inner hash */ MD5_Update(&md5c, k_ipad, PAD_LEN); /* hash inner pad */ MD5_Update(&md5c, text, text_len); /* hash text */ MD5_Final(hmac, &md5c); /* store inner hash */ +#pragma GCC diagnostic pop /* perform outer MD5 */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&md5c); /* start outer hash */ MD5_Update(&md5c, k_opad, PAD_LEN); /* hash outer pad */ MD5_Update(&md5c, hmac, SIG_LEN); /* hash inner hash */ MD5_Final(hmac, &md5c); /* store results */ +#pragma GCC diagnostic pop } /* Test Vectors (Trailing '\0' of a character string not included in test): diff -Naur bareos-Release-21.0.0.orig/core/src/lib/res.cc bareos-Release-21.0.0/core/src/lib/res.cc --- bareos-Release-21.0.0.orig/core/src/lib/res.cc 2022-03-09 09:03:32.079233939 +0100 +++ bareos-Release-21.0.0/core/src/lib/res.cc 2022-03-09 10:00:42.655395825 +0100 @@ -551,9 +551,12 @@ } } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&md5c); MD5_Update(&md5c, (unsigned char*)(lc->str), lc->str_len); MD5_Final(digest, &md5c); +#pragma GCC diagnostic pop for (i = j = 0; i < sizeof(digest); i++) { sprintf(&sig[j], "%02x", digest[i]); j += 2; diff -Naur bareos-Release-21.0.0.orig/core/src/lib/tls_openssl_private.cc bareos-Release-21.0.0/core/src/lib/tls_openssl_private.cc --- bareos-Release-21.0.0.orig/core/src/lib/tls_openssl_private.cc 2022-03-09 09:03:32.080233942 +0100 +++ bareos-Release-21.0.0/core/src/lib/tls_openssl_private.cc 2022-03-09 09:54:18.069592684 +0100 @@ -217,7 +217,10 @@ OpensslPostErrors(M_FATAL, _("Unable to open DH parameters file")); return false; } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" DH* dh = PEM_read_bio_DHparams(bio, NULL, NULL, NULL); +#pragma GCC diagnostic pop BIO_free(bio); if (!dh) { OpensslPostErrors(M_FATAL, @@ -227,7 +230,10 @@ if (!SSL_CTX_set_tmp_dh(openssl_ctx_, dh)) { OpensslPostErrors(M_FATAL, _("Failed to set TLS Diffie-Hellman parameters")); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" DH_free(dh); +#pragma GCC diagnostic pop return false; } SSL_CTX_set_options(openssl_ctx_, SSL_OP_SINGLE_DH_USE); diff -Naur bareos-Release-21.0.0.orig/core/src/lib/util.cc bareos-Release-21.0.0/core/src/lib/util.cc --- bareos-Release-21.0.0.orig/core/src/lib/util.cc 2022-03-09 09:03:32.080233942 +0100 +++ bareos-Release-21.0.0/core/src/lib/util.cc 2022-03-09 09:58:06.378097402 +0100 @@ -819,14 +819,20 @@ Bsnprintf(s + strlen(s), ss, "%lu", (uint32_t)getuid()); Bsnprintf(s + strlen(s), ss, "%lu", (uint32_t)getgid()); #endif +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&md5c); MD5_Update(&md5c, (uint8_t*)s, strlen(s)); MD5_Final(md5key, &md5c); +#pragma GCC diagnostic pop Bsnprintf(s + strlen(s), ss, "%lu", (uint32_t)((time(NULL) + 65121) ^ 0x375F)); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" MD5_Init(&md5c); MD5_Update(&md5c, (uint8_t*)s, strlen(s)); MD5_Final(md5key1, &md5c); +#pragma GCC diagnostic pop #define nextrand (md5key[j] ^ md5key1[j]) if (mode) { for (j = k = 0; j < 16; j++) {