aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrajagandev <dmoorefo@gmail.com>2016-02-08 07:58:45 -0800
committerSergey Poznyakoff <gray@gnu.org.ua>2016-11-10 12:56:35 +0200
commit404600ebb4d417238bfabf7ec1561a62dc83c168 (patch)
treeac945f4093462533e44a5eb67d1f38690db9964e
parent01a4e056e6a581f015fed3eeaef012f8b951bd89 (diff)
downloadcpio-404600ebb4d417238bfabf7ec1561a62dc83c168.tar.gz
cpio-404600ebb4d417238bfabf7ec1561a62dc83c168.tar.bz2
Fix signed integer overflow - big block sizes
-rw-r--r--src/main.c2
-rw-r--r--tests/Makefile.am3
-rw-r--r--tests/testsuite.at1
3 files changed, 4 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index a13861f..5a30a7b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -321,7 +321,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
case BLOCK_SIZE_OPTION: /* --block-size */
io_block_size = atoi (arg);
- if (io_block_size < 1)
+ if (io_block_size < 1 || io_block_size > INT_MAX/512)
USAGE_ERROR ((0, 0, _("invalid block size")));
io_block_size *= 512;
break;
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2fbee29..863f46c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -55,7 +55,8 @@ TESTSUITE_AT = \
symlink-bad-length.at\
symlink-long.at\
symlink-to-stdout.at\
- version.at
+ version.at\
+ big-block-size.at
TESTSUITE = $(srcdir)/testsuite
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 81e205b..b11c4a0 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -42,3 +42,4 @@ m4_include([setstat02.at])
m4_include([setstat03.at])
m4_include([setstat04.at])
m4_include([setstat05.at])
+m4_include([big-block-size.at])

Return to:

Send suggestions and report system problems to the System administrator.