crypto: qat - add param check for DH
authorGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Mon, 9 May 2022 13:34:15 +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 947eeff..7173a2a 100644 (file)
@@ -235,6 +235,10 @@ static int qat_dh_compute_value(struct kpp_request *req)
                req->dst_len = ctx->p_size;
                return -EOVERFLOW;
        }
+
+       if (req->src_len > ctx->p_size)
+               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);