--- src/mbus_parser.c.orig	Thu Jan 23 17:39:55 2003
+++ src/mbus_parser.c	Thu Jan 23 17:41:26 2003
@@ -158,6 +158,7 @@
 int mbus_parse_int(struct mbus_parser *m, int *i)
 {
 	char	*p;
+	long	l;
 
 	assert(m->magic == MBUS_PARSER_MAGIC);
 
@@ -166,11 +167,12 @@
 		CHECK_OVERRUN;
         }
 
-	*i = strtol(m->buffer, &p, 10);
-	if (((*i == LONG_MAX) || (*i == LONG_MIN)) && (errno == ERANGE)) {
+	l = strtol(m->buffer, &p, 10);
+	if (((l >= INT_MAX) || (l <= INT_MIN)) && (errno == ERANGE)) {
 		debug_msg("integer out of range\n");
 		return FALSE;
 	}
+	*i = l;
 
 	if (p == m->buffer) {
 		return FALSE;
