crypto: qat - add param check for RSA
authorGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Mon, 9 May 2022 13:34:14 +0000 (14:34 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 20 May 2022 05:49:18 +0000 (13:49 +0800)
Reject requests with a source buffer that is bigger than the size of the
key. This is to prevent a possible integer underflow that might happen
when copying the source scatterlist into a linear buffer.

Cc: stable@vger.kernel.org
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: Adam Guerin <adam.guerin@intel.com>
Reviewed-by: Wojciech Ziemba <wojciech.ziemba@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/qat/qat_common/qat_asym_algs.c

index 25bbd22..947eeff 100644 (file)
@@ -656,6 +656,10 @@ static int qat_rsa_enc(struct akcipher_request *req)
                req->dst_len = ctx->key_sz;
                return -EOVERFLOW;
        }
+
+       if (req->src_len > ctx->key_sz)
+               return -EINVAL;
+
        memset(msg, '\0', sizeof(*msg));
        ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(msg->pke_hdr,
                                          ICP_QAT_FW_COMN_REQ_FLAG_SET);
@@ -785,6 +789,10 @@ static int qat_rsa_dec(struct akcipher_request *req)
                req->dst_len = ctx->key_sz;
                return -EOVERFLOW;
        }
+
+       if (req->src_len > ctx->key_sz)
+               return -EINVAL;
+
        memset(msg, '\0', sizeof(*msg));
        ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(msg->pke_hdr,
                                          ICP_QAT_FW_COMN_REQ_FLAG_SET);