]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
apps/enc.c: avoid signed integer overflow on bufsize assignment
authorEugene Syromiatnikov <esyr@openssl.org>
Mon, 1 Sep 2025 12:05:33 +0000 (14:05 +0200)
committerNeil Horman <nhorman@openssl.org>
Sat, 6 Sep 2025 14:18:19 +0000 (10:18 -0400)
The calculated option value, while being long-typed, is not checked
for fitting into int-sized bufsize.  Avoid overflow by throwing error
if it is bigger than INT_MAX and document that behaviour.

Fixes: 7e1b7485706c "Big apps cleanup (option-parsing, etc)"
Resolves: https://scan5.scan.coverity.com/#/project-view/65248/10222?selectedIssue=1665149
References: https://github.com/openssl/project/issues/1362
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/28408)

(cherry picked from commit 98cb959999e4db9be524a972dccaf6b0c8167431)

apps/enc.c
doc/man1/openssl-enc.pod.in

index c275046cf57a647d18cf01b6df8dcf756801d61e..bda719b915da70673e2e1348a92945a84d355198 100644 (file)
@@ -234,6 +234,8 @@ int enc_main(int argc, char **argv)
                 goto opthelp;
             if (k)
                 n *= 1024;
+            if (n > INT_MAX)
+                goto opthelp;
             bsize = (int)n;
             break;
         case OPT_K:
index a47e783e2d63068493b01875aa231837514e078c..4612ab0a7ea604e78ab17d5918106b0ee7b4faea 100644 (file)
@@ -183,6 +183,7 @@ or decryption.
 =item B<-bufsize> I<number>
 
 Set the buffer size for I/O.
+The maximum size that can be specified is B<2^31-1> (2147483647) bytes.
 
 =item B<-nopad>