From d22df2915ce5005e6789f0cd4d188e56432264a7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= <j.neuschaefer@gmx.net>
Date: Wed, 15 Feb 2012 20:35:06 +0100
Subject: 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.
---
 src/main.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/main.c b/src/main.c
index f7e7ba778..687e86f7e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;
 
-- 
cgit v1.2.3