BUG/MINOR: conf: "listener id" expects integer, but its not checked

The listener id was converted with a simple atol, so conversion
error are unchecked. This patch uses strtol and checks the
conversion status.
(cherry picked from commit e7fe8eb889b6e3a92892b0463ee6e61bebec0bb1)
(cherry picked from commit 0c5f31ba6e44878bf7b2ccb21736d39d8b9e51e8)
diff --git a/src/listener.c b/src/listener.c
index 21eba52..462fbe3 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -647,6 +647,7 @@
 {
 	struct eb32_node *node;
 	struct listener *l, *new;
+	char *error;
 
 	if (conf->listeners.n != conf->listeners.p) {
 		memprintf(err, "'%s' can only be used with a single socket", args[cur_arg]);
@@ -659,7 +660,11 @@
 	}
 
 	new = LIST_NEXT(&conf->listeners, struct listener *, by_bind);
-	new->luid = atol(args[cur_arg + 1]);
+	new->luid = strtol(args[cur_arg + 1], &error, 10);
+	if (*error != '\0') {
+		memprintf(err, "'%s' : expects an integer argument, found '%s'", args[cur_arg], args[cur_arg + 1]);
+		return ERR_ALERT | ERR_FATAL;
+	}
 	new->conf.id.key = new->luid;
 
 	if (new->luid <= 0) {