Jan Echternach's string_to_number bignum fixes.
diff --git a/ip6tables.c b/ip6tables.c
index 27e7187..4df70c8 100644
--- a/ip6tables.c
+++ b/ip6tables.c
@@ -745,14 +745,15 @@
 int
 string_to_number(const char *s, int min, int max)
 {
-	int number;
+       long number;
 	char *end;
 
 	/* Handle hex, octal, etc. */
-	number = (int)strtol(s, &end, 0);
+       errno = 0;
+       number = strtol(s, &end, 0);
 	if (*end == '\0' && end != s) {
 		/* we parsed a number, let's see if we want this */
-		if (min <= number && number <= max)
+               if (errno != ERANGE && min <= number && number <= max)
 			return number;
 	}
 	return -1;
@@ -818,7 +819,7 @@
 }
 
 static struct option *
-merge_options(struct option *oldopts, struct option *newopts,
+merge_options(struct option *oldopts, const struct option *newopts,
 	      unsigned int *option_offset)
 {
 	unsigned int num_old, num_new, i;