Limit the size of various MAXCHUNK definitions
authorPauli <pauli@openssl.org>
Mon, 15 Aug 2022 04:49:17 +0000 (14:49 +1000)
committerPauli <pauli@openssl.org>
Fri, 19 Aug 2022 07:29:48 +0000 (17:29 +1000)
commitd3072f3f3ba3a6385bd41473483c9ee81443b684
treecde891061a3017837894cd92bf4f2e5e13f11a9e
parenta6cadcbdc3b4f3fbd0fd228e41177f0661b68264
Limit the size of various MAXCHUNK definitions

The current code has issues when sizeof(long) <> sizeof(size_t).  The two
types are assumed to be interchangeable and them being different will
cause crashes and endless loops.

This fix limits the maximum chunk size for many of the symmetric ciphers
to 2^30 bytes.  This chunk size limits the amount of data that will
be encrypted/decrypted in one lump.  The code internally handles block
of data later than the chunk limit, so this will present no difference
to the caller.  Any loss of efficiency due to limiting the chunking to
1Gbyte rather than more should be insignificant.

Fixes Coverity issues:
    15084981508500 - 15085051508507 - 15085271508529 - 1508533,
    1508535 - 150853715085391508541 - 15085491508551 - 1508569 &
    1508571 - 1508582.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18997)

(cherry picked from commit 709d4be78f64a8ba0707fb5682b90039e848dad4)
include/crypto/evp.h
providers/implementations/include/prov/ciphercommon.h