main: handle negative strtol return value

size_t is unsigned most of the time, so we can't really use it to
check for negative values. Also handle strtol overflow.
This commit is contained in:
Jonathan Neuschäfer 2012-02-15 20:35:06 +01:00
parent e77d96cf89
commit d22df2915c

View File

@ -258,10 +258,11 @@ initialize_decoder_and_player(void)
param = config_get_param(CONF_AUDIO_BUFFER_SIZE);
if (param != NULL) {
buffer_size = strtol(param->value, &test, 10);
if (*test != '\0' || buffer_size <= 0)
long tmp = strtol(param->value, &test, 10);
if (*test != '\0' || tmp <= 0 || tmp == LONG_MAX)
MPD_ERROR("buffer size \"%s\" is not a positive integer, "
"line %i\n", param->value, param->line);
buffer_size = tmp;
} else
buffer_size = DEFAULT_BUFFER_SIZE;