aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
authorLukas Wunner <lukas@wunner.de>2026-05-14 08:55:58 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2026-05-22 20:25:29 +0800
commit3b626ba431c4501512ad07549310685e07fe4706 (patch)
tree18fbea68e3c872aec3497e6074f35df68db2f045 /crypto
parent86ad8069366642fec18c1bc53c24cad3da720ce5 (diff)
downloadlinux-next-history-3b626ba431c4501512ad07549310685e07fe4706.tar.gz
X.509: Fix validation of ASN.1 certificate header
x509_load_certificate_list() seeks to enforce that a certificate starts with 0x30 0x82 (ASN.1 SEQUENCE tag followed by a length of more than 256 and less than 65535 bytes). But it only enforces that *either* of those two byte values are present, instead of checking for the *conjunction* of the two values. Fix it. Fixes: 631cc66eb9ea ("MODSIGN: Provide module signing public keys to the kernel") Reported-by: Sashiko <sashiko-bot@kernel.org> Closes: https://lore.kernel.org/r/20260508033917.B5873C2BCB0@smtp.kernel.org/ Signed-off-by: Lukas Wunner <lukas@wunner.de> Cc: stable@vger.kernel.org # v3.7+ Reviewed-by: Ignat Korchagin <ignat@linux.win> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/asymmetric_keys/x509_loader.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/asymmetric_keys/x509_loader.c b/crypto/asymmetric_keys/x509_loader.c
index a417413269989..0d516c77cc26a 100644
--- a/crypto/asymmetric_keys/x509_loader.c
+++ b/crypto/asymmetric_keys/x509_loader.c
@@ -20,7 +20,7 @@ int x509_load_certificate_list(const u8 cert_list[],
*/
if (end - p < 4)
goto dodgy_cert;
- if (p[0] != 0x30 &&
+ if (p[0] != 0x30 ||
p[1] != 0x82)
goto dodgy_cert;
plen = (p[2] << 8) | p[3];