diff --git a/libjack/client.c b/libjack/client.c index 31f5165..d37936f 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -2547,6 +2547,10 @@ jack_set_buffer_size (jack_client_t *client, jack_nframes_t nframes) VALGRIND_MEMSET (&req, 0, sizeof (req)); + if (nframes < 1 || nframes > 16384) { + return ERANGE; + } + req.type = SetBufferSize; req.x.nframes = nframes; diff --git a/tools/bufsize.c b/tools/bufsize.c index c0980d6..3fb7e7b 100644 --- a/tools/bufsize.c +++ b/tools/bufsize.c @@ -64,12 +64,23 @@ void parse_arguments(int argc, char *argv[]) exit(9); } + if (strspn (argv[1], "0123456789") != strlen (argv[1])) { + fprintf(stderr, "usage: %s \n", package); + exit(8); + } + nframes = strtoul(argv[1], NULL, 0); if (errno == ERANGE) { - fprintf(stderr, "%s: invalid buffer size: %s\n", + fprintf(stderr, "%s: invalid buffer size: %s (range is 1-16384)\n", package, argv[1]); exit(2); } + if (nframes < 1 || nframes > 16384) { + fprintf(stderr, "%s: invalid buffer size: %s (range is 1-16384)\n", + package, argv[1]); + exit(3); + } + } void silent_function( const char *ignore )