From 6965d051ae4c34116367ae5f2319c843d788661c Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Tue, 10 Dec 2019 09:28:27 +0100 Subject: [PATCH] Limit bitrate range to 31 bits integer A proper solution could be to use "long long" instead (guaranteed to be at least 64 bits), but it adds its own problems (e.g. "%lld" is not supported as a printf format on all platforms). In practice, we don't need such high values, so keep it simple. Fixes #995 --- app/src/cli.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/cli.c b/app/src/cli.c index 0ce1304c..d9e1013a 100644 --- a/app/src/cli.c +++ b/app/src/cli.c @@ -224,7 +224,9 @@ parse_integer_arg(const char *s, long *out, bool accept_suffix, long min, static bool parse_bit_rate(const char *s, uint32_t *bit_rate) { long value; - bool ok = parse_integer_arg(s, &value, true, 0, 0xFFFFFFFF, "bit-rate"); + // long may be 32 bits (it is the case on mingw), so do not use more than + // 31 bits (long is signed) + bool ok = parse_integer_arg(s, &value, true, 0, 0x7FFFFFFF, "bit-rate"); if (!ok) { return false; }