crypto: rsa-pkcs1pad - fix buffer overread in pkcs1pad_verify_complete()
authorEric Biggers <ebiggers@google.com>
Wed, 19 Jan 2022 00:13:05 +0000 (16:13 -0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 31 Jan 2022 00:21:44 +0000 (11:21 +1100)
Before checking whether the expected digest_info is present, we need to
check that there are enough bytes remaining.

Fixes: a49de377e051 ("crypto: Add hash param to pkcs1pad")
Cc: <stable@vger.kernel.org> # v4.6+
Cc: Tadeusz Struk <tadeusz.struk@linaro.org>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/rsa-pkcs1pad.c

index 6b556dd..9d80483 100644 (file)
@@ -476,6 +476,8 @@ static int pkcs1pad_verify_complete(struct akcipher_request *req, int err)
        pos++;
 
        if (digest_info) {
+               if (digest_info->size > dst_len - pos)
+                       goto done;
                if (crypto_memneq(out_buf + pos, digest_info->data,
                                  digest_info->size))
                        goto done;