diff options
Diffstat (limited to 'contrib/bind/bin/ndc/ndc.c')
-rw-r--r-- | contrib/bind/bin/ndc/ndc.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/contrib/bind/bin/ndc/ndc.c b/contrib/bind/bin/ndc/ndc.c index d077042..1499184 100644 --- a/contrib/bind/bin/ndc/ndc.c +++ b/contrib/bind/bin/ndc/ndc.c @@ -1,5 +1,5 @@ #if !defined(lint) && !defined(SABER) -static const char rcsid[] = "$Id: ndc.c,v 1.22 2002/06/24 07:28:55 marka Exp $"; +static const char rcsid[] = "$Id: ndc.c,v 1.25 2003/04/03 05:42:10 marka Exp $"; #endif /* not lint */ /* @@ -88,7 +88,7 @@ static void start_named(const char *, int); static int fgetpid(const char *, pid_t *); static int get_sockaddr(const char *, sockaddr_t *); static size_t impute_addrlen(const struct sockaddr *); -static void vtrace(const char *, va_list); +static void vtrace(const char *, va_list) ISC_FORMAT_PRINTF(1, 0); static void trace(const char *, ...) ISC_FORMAT_PRINTF(1, 2); static void result(const char *, ...) ISC_FORMAT_PRINTF(1, 2); static void fatal(const char *, ...) ISC_FORMAT_PRINTF(1, 2); @@ -283,7 +283,7 @@ getargs_closure(void *arg, const char *msg, int flags) { } len = 0; cp = msg + 4; - while (*cp != NULL) { + while (*cp != '\0') { c = *cp; if (c == '%') { cp2 = strchr(hexdigits, cp[1]); @@ -325,7 +325,7 @@ getargs_closure(void *arg, const char *msg, int flags) { } cp = msg + 4; tp = argv->argv[i]; - while (*cp != NULL) { + while (*cp != '\0') { c = *cp; if (c == '%') { cp2 = strchr(hexdigits, cp[1]); @@ -374,6 +374,8 @@ get_args(char **restp) { len = 0; for (i = 1 ; i < argv.argc && argv.argv[i] != NULL; i++) len += strlen(argv.argv[i]) + 1; + if (len == 0) + len = 1; rest = malloc(len); if (rest == NULL) { result = 0; @@ -386,7 +388,8 @@ get_args(char **restp) { *p++ = ' '; } if (p != rest) - p[-1] = '\0'; + p--; + p[0] = '\0'; *restp = rest; err: |