Date: Mon, 11 Jun 2001 16:18:29 -0400 (EDT) From: mike@q9media.com To: FreeBSD-gnats-submit@freebsd.org Subject: bin/28082: [patch] src/usr.bin/whois clean-up Message-ID: <200106112018.f5BKITm67332@coffee.q9media.com>
next in thread | raw e-mail | index | archive | help
>Number: 28082 >Category: bin >Synopsis: [patch] src/usr.bin/whois clean-up >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Jun 11 13:10:01 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Mike Barcroft >Release: FreeBSD 5.0-CURRENT i386 >Organization: Q9 Media >Environment: $FreeBSD: /c/ncvs/src/usr.bin/whois/Makefile,v 1.3 1999/11/17 19:11:51 ache Exp $ $FreeBSD: /c/ncvs/src/usr.bin/whois/whois.c,v 1.18 2001/06/01 13:43:20 ume Exp $ >Description: The following patch has been sent to -audit. Reviewed by mikeh and gad. All problems brought up were resolved. 20010605 whois.patch o Silence warnings and set WARNS=2 o Fix two memory leaks o asprint -> strdup where appropriate o calloc/strcpy/strcat -> aprintf o Convert to ANSI C to avoid having to prototype main() o Fix two minor tab issues >How-To-Repeat: >Fix: Index: whois/Makefile =================================================================== RCS file: /home/ncvs/src/usr.bin/whois/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- whois/Makefile 1999/11/17 19:11:51 1.3 +++ whois/Makefile 2001/06/05 05:06:59 @@ -2,8 +2,8 @@ # $FreeBSD: src/usr.bin/whois/Makefile,v 1.3 1999/11/17 19:11:51 ache Exp $ PROG= whois +WARNS?= 2 -CFLAGS+=-Wall .if defined(SOCKS) CFLAGS+=-DSOCKS CFLAGS+=-Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dlisten=Rlisten \ Index: whois/whois.c =================================================================== RCS file: /home/ncvs/src/usr.bin/whois/whois.c,v retrieving revision 1.18 diff -u -r1.18 whois.c --- whois/whois.c 2001/06/01 13:43:20 1.18 +++ whois/whois.c 2001/06/05 05:07:00 @@ -75,17 +75,15 @@ #define WHOIS_INIC_FALLBACK 0x02 #define WHOIS_QUICK 0x04 -static void usage __P((void)); -static void whois __P((char *, struct addrinfo *, int)); +static void usage(void); +static void whois(char *, struct addrinfo *, int); int -main(argc, argv) - int argc; - char **argv; +main(int argc, char *argv[]) { int ch, i, j, error; int use_qnichost, flags; - char *host; + const char *host; char *qnichost; struct addrinfo hints, *res; @@ -157,10 +155,6 @@ } while (argc--) { if (use_qnichost) { - if (qnichost) { - free(qnichost); - qnichost = NULL; - } for (i = j = 0; (*argv)[i]; i++) { if ((*argv)[i] == '.') { j = i; @@ -168,17 +162,16 @@ } if (j != 0) { if (isdigit(*(*argv + j + 1))) { - (void) asprintf(&qnichost, "%s", - ANICHOST); + qnichost = strdup(ANICHOST); + if (qnichost == NULL) { + err(1, "strdup"); + } } else { - qnichost = (char *) calloc(i - j - + 1 + strlen(QNICHOST_TAIL), - sizeof(char)); - if (!qnichost) { - err(1, "calloc"); + (void)asprintf(&qnichost, "%s%s", + *argv + j + 1, QNICHOST_TAIL); + if (qnichost == NULL) { + err(1, "asprintf"); } - strcpy(qnichost, *argv + j + 1); - strcat(qnichost, QNICHOST_TAIL); } memset(&hints, 0, sizeof(hints)); @@ -186,10 +179,10 @@ hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; error = getaddrinfo(qnichost, "whois", - &hints, &res); + &hints, &res); if (error != 0) errx(EX_NOHOST, "%s: %s", qnichost, - gai_strerror(error)); + gai_strerror(error)); } } if (!qnichost) { @@ -203,6 +196,8 @@ gai_strerror(error)); } + free(qnichost); + qnichost = NULL; whois(*argv++, res, flags); freeaddrinfo(res); } @@ -210,10 +205,7 @@ } static void -whois(name, res, flags) - char *name; - struct addrinfo *res; - int flags; +whois(char *name, struct addrinfo *res, int flags) { FILE *sfi, *sfo; char *buf, *p, *nhost; @@ -277,7 +269,10 @@ /* Do second lookup as needed */ if (nomatch && !nhost) { (void)printf("Looking up %s at %s.\n\n", name, INICHOST); - nhost = INICHOST; + nhost = strdup(INICHOST); + if (nhost == NULL) { + err(1, "strdup"); + } } if (nhost) { struct addrinfo hints, *res2; @@ -301,7 +296,7 @@ } static void -usage() +usage(void) { (void)fprintf(stderr, "usage: whois [-adgimpQrR6] [-h hostname] name ...\n"); >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200106112018.f5BKITm67332>