diff --git a/src/libsodium/crypto_stream/chacha20/ref/stream_chacha20_ref.c b/src/libsodium/crypto_stream/chacha20/ref/stream_chacha20_ref.c index 0e0ef38c..5a64fd48 100644 --- a/src/libsodium/crypto_stream/chacha20/ref/stream_chacha20_ref.c +++ b/src/libsodium/crypto_stream/chacha20/ref/stream_chacha20_ref.c @@ -8,6 +8,7 @@ */ #include +#include #include #include "api.h" @@ -267,6 +268,9 @@ crypto_stream_chacha20_ietf_ref(unsigned char *c, unsigned long long clen, if (!clen) { return 0; } + if (clen > 64ULL * (1ULL << 32) - 64ULL) { + abort(); + } (void) sizeof(int[crypto_stream_chacha20_KEYBYTES == 256 / 8 ? 1 : -1]); chacha_keysetup(&ctx, k); chacha_ietf_ivsetup(&ctx, n, NULL);