Skip to content

Commit 54c1fb3

Browse files
ebiggersdhowells
authored andcommitted
X.509: fix comparisons of ->pkey_algo
->pkey_algo used to be an enum, but was changed to a string by commit 4e8ae72 ("X.509: Make algo identifiers text instead of enum"). But two comparisons were not updated. Fix them to use strcmp(). This bug broke signature verification in certain configurations, depending on whether the string constants were deduplicated or not. Fixes: 4e8ae72 ("X.509: Make algo identifiers text instead of enum") Cc: <[email protected]> # v4.6+ Signed-off-by: Eric Biggers <[email protected]> Signed-off-by: David Howells <[email protected]>
1 parent 18026d8 commit 54c1fb3

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

crypto/asymmetric_keys/pkcs7_verify.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ static int pkcs7_find_key(struct pkcs7_message *pkcs7,
147147
pr_devel("Sig %u: Found cert serial match X.509[%u]\n",
148148
sinfo->index, certix);
149149

150-
if (x509->pub->pkey_algo != sinfo->sig->pkey_algo) {
150+
if (strcmp(x509->pub->pkey_algo, sinfo->sig->pkey_algo) != 0) {
151151
pr_warn("Sig %u: X.509 algo and PKCS#7 sig algo don't match\n",
152152
sinfo->index);
153153
continue;

crypto/asymmetric_keys/x509_public_key.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ int x509_check_for_self_signed(struct x509_certificate *cert)
131131
}
132132

133133
ret = -EKEYREJECTED;
134-
if (cert->pub->pkey_algo != cert->sig->pkey_algo)
134+
if (strcmp(cert->pub->pkey_algo, cert->sig->pkey_algo) != 0)
135135
goto out;
136136

137137
ret = public_key_verify_signature(cert->pub, cert->sig);

0 commit comments

Comments
 (0)