Source: krb5
Version: 1.18.3-7
Severity: important
Tags: patch
Dear maintainer,
krb5 fails to build with openssl3 from experimental:
|make[4]: Entering directory '/<<PKGBUILDDIR>>/build/tests/softpkcs11'
|gcc -fPIC -DSHARED -DHAVE_CONFIG_H -I../../include -I../../../src/include
-I../../../src/plugins/preauth/pkinit -DKRB5_DEPRECATED=1 -DKRB5_PRIVATE
-Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
-fstack-protector-strong -Wformat -Werror=format-security -Wall -Wcast-align
-Wshadow -Wmissing-prototypes -Wno-format-zero-length -Woverflow
-Wstrict-overflow -Wmissing-format-attribute -Wmissing-prototypes -Wreturn-type
-Wmissing-braces -Wparentheses -Wswitch -Wunused-function -Wunused-label
-Wunused-variable -Wunused-value -Wunknown-pragmas -Wsign-compare
-Werror=uninitialized -Wno-maybe-uninitialized -Werror=pointer-arith
-Werror=int-conversion -Werror=incompatible-pointer-types
-Werror=discarded-qualifiers -Werror=implicit-int
-Werror=declaration-after-statement -Werror-implicit-function-declaration
-pthread -c ../../../src/tests/softpkcs11/main.c -o main.so.o && mv -f
main.so.o main.so
|o > binutils.versions "HIDDEN { local: __*; _rest*; _save*; *; };"
|echo >> binutils.versions "softpkcs11_0_MIT {"
|sed >> binutils.versions < ../../../src/tests/softpkcs11/softpkcs11.exports
"s/$/;/"
|echo >> binutils.versions "};"
|../../../src/tests/softpkcs11/main.c: In function ‘application_error’:
|../../../src/tests/softpkcs11/main.c:161:5: warning: function
‘application_error’ might be a candidate for ‘gnu_printf’ format attribute
[-Wsuggest-attribute=format]
| 161 | vprintf(fmt, ap);
| | ^~~~~~~
|../../../src/tests/softpkcs11/main.c: In function ‘st_logf’:
|../../../src/tests/softpkcs11/main.c:174:5: warning: function ‘st_logf’ might
be a candidate for ‘gnu_printf’ format attribute [-Wsuggest-attribute=format]
| 174 | vfprintf(soft_token.logfile, fmt, ap);
| | ^~~~~~~~
|../../../src/tests/softpkcs11/main.c: In function ‘snprintf_fill’:
|../../../src/tests/softpkcs11/main.c:185:5: warning: function ‘snprintf_fill’
might be a candidate for ‘gnu_printf’ format attribute
[-Wsuggest-attribute=format]
| 185 | len = vsnprintf(str, size, fmt, ap);
| | ^~~
|../../../src/tests/softpkcs11/main.c: In function ‘add_pubkey_info’:
|../../../src/tests/softpkcs11/main.c:430:9: warning: ‘EVP_PKEY_get0_RSA’ is
deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
| 430 | rsa = EVP_PKEY_get0_RSA(key);
| | ^~~
|In file included from ../../../src/tests/softpkcs11/main.c:38:
|/usr/include/openssl/evp.h:1346:22: note: declared here
| 1346 | const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey);
| | ^~~~~~~~~~~~~~~~~
|../../../src/tests/softpkcs11/main.c:430:13: error: assignment discards
‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 430 | rsa = EVP_PKEY_get0_RSA(key);
| | ^
|[...]
|cc1: some warnings being treated as errors
|make[4]: *** [Makefile:804: main.so] Error 1
|make[4]: Leaving directory '/<<PKGBUILDDIR>>/build/tests/softpkcs11'
|make[3]: *** [Makefile:1223: all-recurse] Error 1
|make[3]: Leaving directory '/<<PKGBUILDDIR>>/build/tests'
|make[2]: *** [Makefile:1546: all-recurse] Error 1
There is a patch in the OpenMandriva repository that fixes this and
which I have attached:
https://raw.githubusercontent.com/OpenMandrivaAssociation/krb5/master/krb5-openssl3.patch
(I am getting a "LaTeX Error: File `tgtermes.sty' not found." error then
which I have not further diagnosed).
Michael
diff -up krb5-1.19.1/src/tests/softpkcs11/main.c.omv~
krb5-1.19.1/src/tests/softpkcs11/main.c
--- krb5-1.19.1/src/tests/softpkcs11/main.c.omv~ 2021-03-29
17:46:17.495294577 +0200
+++ krb5-1.19.1/src/tests/softpkcs11/main.c 2021-03-29 17:50:06.618117704
+0200
@@ -427,7 +427,7 @@ add_pubkey_info(struct st_object *o, CK_
RSA *rsa;
const BIGNUM *n, *e;
- rsa = EVP_PKEY_get0_RSA(key);
+ rsa = EVP_PKEY_get1_RSA(key);
RSA_get0_key(rsa, &n, &e, NULL);
modulus_bits = BN_num_bits(n);
@@ -680,7 +680,7 @@ add_certificate(char *label,
/* XXX verify keytype */
if (key_type == CKK_RSA)
- RSA_set_method(EVP_PKEY_get0_RSA(o->u.private_key.key),
+ RSA_set_method(EVP_PKEY_get1_RSA(o->u.private_key.key),
RSA_PKCS1_OpenSSL());
if (X509_check_private_key(cert, o->u.private_key.key) != 1) {
@@ -1224,7 +1224,7 @@ C_Login(CK_SESSION_HANDLE hSession,
}
/* XXX check keytype */
- RSA_set_method(EVP_PKEY_get0_RSA(o->u.private_key.key),
+ RSA_set_method(EVP_PKEY_get1_RSA(o->u.private_key.key),
RSA_PKCS1_OpenSSL());
if (X509_check_private_key(o->u.private_key.cert,
o->u.private_key.key) != 1) {
@@ -1512,7 +1512,7 @@ C_Encrypt(CK_SESSION_HANDLE hSession,
return CKR_ARGUMENTS_BAD;
}
- rsa = EVP_PKEY_get0_RSA(o->u.public_key);
+ rsa = EVP_PKEY_get1_RSA(o->u.public_key);
if (rsa == NULL)
return CKR_ARGUMENTS_BAD;
@@ -1663,7 +1663,7 @@ C_Decrypt(CK_SESSION_HANDLE hSession,
return CKR_ARGUMENTS_BAD;
}
- rsa = EVP_PKEY_get0_RSA(o->u.private_key.key);
+ rsa = EVP_PKEY_get1_RSA(o->u.private_key.key);
if (rsa == NULL)
return CKR_ARGUMENTS_BAD;
@@ -1822,7 +1822,7 @@ C_Sign(CK_SESSION_HANDLE hSession,
return CKR_ARGUMENTS_BAD;
}
- rsa = EVP_PKEY_get0_RSA(o->u.private_key.key);
+ rsa = EVP_PKEY_get1_RSA(o->u.private_key.key);
if (rsa == NULL)
return CKR_ARGUMENTS_BAD;
@@ -1969,7 +1969,7 @@ C_Verify(CK_SESSION_HANDLE hSession,
return CKR_ARGUMENTS_BAD;
}
- rsa = EVP_PKEY_get0_RSA(o->u.public_key);
+ rsa = EVP_PKEY_get1_RSA(o->u.public_key);
if (rsa == NULL)
return CKR_ARGUMENTS_BAD;