summaryrefslogtreecommitdiff
path: root/bin/nsupdate/nsupdate.c
diff options
context:
space:
mode:
Diffstat (limited to 'bin/nsupdate/nsupdate.c')
-rw-r--r--bin/nsupdate/nsupdate.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c
index fefbf141..b1da4d26 100644
--- a/bin/nsupdate/nsupdate.c
+++ b/bin/nsupdate/nsupdate.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000, 2001 Internet Software Consortium.
+ * Copyright (C) 2000-2002 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: nsupdate.c,v 1.103.2.6 2001/11/06 21:50:35 bwelling Exp $ */
+/* $Id: nsupdate.c,v 1.103.2.9 2002/02/08 03:57:18 marka Exp $ */
#include <config.h>
@@ -1101,7 +1101,7 @@ static isc_uint16_t
update_addordelete(char *cmdline, isc_boolean_t isdelete) {
isc_result_t result;
dns_name_t *name = NULL;
- long ttl;
+ unsigned long ttl;
char *word;
dns_rdataclass_t rdataclass;
dns_rdatatype_t rdatatype;
@@ -1147,29 +1147,20 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
goto doneparsing;
}
}
- errno = 0;
- ttl = strtol(word, &endp, 0);
- if (*endp != '\0') {
+ ttl = strtoul(word, &endp, 10);
+ if (!isdigit((unsigned char)*word) || *endp != '\0') {
if (isdelete) {
ttl = 0;
goto parseclass;
} else {
- fprintf(stderr, "ttl '%s' is not numeric\n", word);
+ fprintf(stderr, "ttl '%s' is not legal\n", word);
goto failure;
}
}
if (isdelete)
ttl = 0;
- else if (ttl < 0 || ttl > TTL_MAX ||
- (ttl == LONG_MAX && errno == ERANGE))
- {
- /*
- * The errno test is needed to catch when strtol()
- * overflows on a platform where sizeof(int) ==
- * sizeof(long), because ttl will be set to LONG_MAX,
- * which will be equal to TTL_MAX.
- */
+ else if (ttl > TTL_MAX) {
fprintf(stderr, "ttl '%s' is out of range (0 to %d)\n",
word, TTL_MAX);
goto failure;