Skip to content

Commit c9cc051

Browse files
zx2c4herbertx
authored andcommitted
crypto: chacha20poly1305 - prevent integer overflow on large input
This code assigns src_len (size_t) to sl (int), which causes problems when src_len is very large. Probably nobody in the kernel should be passing this much data to chacha20poly1305 all in one go anyway, so I don't think we need to change the algorithm or introduce larger types or anything. But we should at least error out early in this case and print a warning so that we get reports if this does happen and can look into why anybody is possibly passing it that much data or if they're accidently passing -1 or similar. Fixes: d95312a ("crypto: lib/chacha20poly1305 - reimplement crypt_from_sg() routine") Cc: Ard Biesheuvel <[email protected]> Cc: [email protected] # 5.5+ Signed-off-by: Jason A. Donenfeld <[email protected]> Acked-by: Ard Biesheuvel <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent 872d92d commit c9cc051

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

lib/crypto/chacha20poly1305.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,9 @@ bool chacha20poly1305_crypt_sg_inplace(struct scatterlist *src,
235235
__le64 lens[2];
236236
} b __aligned(16);
237237

238+
if (WARN_ON(src_len > INT_MAX))
239+
return false;
240+
238241
chacha_load_key(b.k, key);
239242

240243
b.iv[0] = 0;

0 commit comments

Comments
 (0)