Module Name: src Committed By: christos Date: Fri Nov 26 18:58:43 UTC 2010
Modified Files: src/usr.sbin/faithd: Makefile faithd.c faithd.h ftp.c prefix.c tcp.c Log Message: KNF, pass lint. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/usr.sbin/faithd/Makefile cvs rdiff -u -r1.32 -r1.33 src/usr.sbin/faithd/faithd.c cvs rdiff -u -r1.9 -r1.10 src/usr.sbin/faithd/faithd.h \ src/usr.sbin/faithd/tcp.c cvs rdiff -u -r1.18 -r1.19 src/usr.sbin/faithd/ftp.c cvs rdiff -u -r1.7 -r1.8 src/usr.sbin/faithd/prefix.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/faithd/Makefile diff -u src/usr.sbin/faithd/Makefile:1.4 src/usr.sbin/faithd/Makefile:1.5 --- src/usr.sbin/faithd/Makefile:1.4 Mon May 28 08:06:34 2007 +++ src/usr.sbin/faithd/Makefile Fri Nov 26 13:58:43 2010 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.4 2007/05/28 12:06:34 tls Exp $ +# $NetBSD: Makefile,v 1.5 2010/11/26 18:58:43 christos Exp $ USE_FORT?= yes # network server @@ -6,6 +6,6 @@ SRCS= faithd.c tcp.c ftp.c prefix.c MAN= faithd.8 -#CFLAGS+= -DFAITH4 +#CPPFLAGS+= -DFAITH4 .include <bsd.prog.mk> Index: src/usr.sbin/faithd/faithd.c diff -u src/usr.sbin/faithd/faithd.c:1.32 src/usr.sbin/faithd/faithd.c:1.33 --- src/usr.sbin/faithd/faithd.c:1.32 Sat Dec 15 11:32:07 2007 +++ src/usr.sbin/faithd/faithd.c Fri Nov 26 13:58:43 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: faithd.c,v 1.32 2007/12/15 16:32:07 perry Exp $ */ +/* $NetBSD: faithd.c,v 1.33 2010/11/26 18:58:43 christos Exp $ */ /* $KAME: faithd.c,v 1.62 2003/08/19 21:20:33 itojun Exp $ */ /* @@ -77,7 +77,6 @@ char *serverpath = NULL; char *serverarg[MAXARGV + 1]; -static char *faithdname = NULL; char logname[BUFSIZ]; char procname[BUFSIZ]; struct myaddrs { @@ -94,22 +93,21 @@ static int inetd = 0; static char *configfile = NULL; -int main __P((int, char **)); -static int inetd_main __P((int, char **)); -static int daemon_main __P((int, char **)); -static void play_service __P((int)); -static void play_child __P((int, struct sockaddr *)); -static int faith_prefix __P((struct sockaddr *)); -static int map6to4 __P((struct sockaddr_in6 *, struct sockaddr_in *)); -static void sig_child __P((int)); -static void sig_terminate __P((int)); -static void start_daemon __P((void)); -static void exit_stderr __P((const char *, ...)) +static int inetd_main(int, char **); +static int daemon_main(int, char **); +static void play_service(int); +static void play_child(int, struct sockaddr *); +static int faith_prefix(struct sockaddr *); +static int map6to4(struct sockaddr_in6 *, struct sockaddr_in *); +static void sig_child(int); +static void sig_terminate(int); +static void start_daemon(void); +static void exit_stderr(const char *, ...) __attribute__((__format__(__printf__, 1, 2))); -static void grab_myaddrs __P((void)); -static void free_myaddrs __P((void)); -static void update_myaddrs __P((void)); -static void usage __P((void)); +static void grab_myaddrs(void); +static void free_myaddrs(void); +static void update_myaddrs(void); +static void usage(void) __attribute__((__noreturn__)); int main(int argc, char **argv) @@ -119,13 +117,9 @@ * Initializing stuff */ - faithdname = strrchr(argv[0], '/'); - if (faithdname) - faithdname++; - else - faithdname = argv[0]; + setprogname(argv[0]); - if (strcmp(faithdname, "faithd") != 0) { + if (strcmp(getprogname(), "faithd") != 0) { inetd = 1; return inetd_main(argc, argv); } else @@ -150,9 +144,10 @@ } if (strrchr(argv[0], '/') == NULL) - snprintf(path, sizeof(path), "%s/%s", DEFAULT_DIR, argv[0]); + (void)snprintf(path, sizeof(path), "%s/%s", DEFAULT_DIR, + argv[0]); else - snprintf(path, sizeof(path), "%s", argv[0]); + (void)snprintf(path, sizeof(path), "%s", argv[0]); #ifdef USE_ROUTE grab_myaddrs(); @@ -165,26 +160,26 @@ #endif melen = sizeof(me); - if (getsockname(STDIN_FILENO, (struct sockaddr *)&me, &melen) < 0) { + if (getsockname(STDIN_FILENO, (void *)&me, &melen) == -1) { exit_failure("getsockname: %s", strerror(errno)); /*NOTREACHED*/ } fromlen = sizeof(from); - if (getpeername(STDIN_FILENO, (struct sockaddr *)&from, &fromlen) < 0) { + if (getpeername(STDIN_FILENO, (void *)&from, &fromlen) == -1) { exit_failure("getpeername: %s", strerror(errno)); /*NOTREACHED*/ } - if (getnameinfo((struct sockaddr *)&me, melen, NULL, 0, - sbuf, sizeof(sbuf), NI_NUMERICHOST) == 0) + if (getnameinfo((void *)&me, melen, NULL, 0, + sbuf, (socklen_t)sizeof(sbuf), NI_NUMERICHOST) == 0) service = sbuf; else service = DEFAULT_PORT_NAME; - if (getnameinfo((struct sockaddr *)&me, melen, NULL, 0, - snum, sizeof(snum), NI_NUMERICHOST) != 0) - snprintf(snum, sizeof(snum), "?"); + if (getnameinfo((void *)&me, melen, NULL, 0, + snum, (socklen_t)sizeof(snum), NI_NUMERICHOST) != 0) + (void)snprintf(snum, sizeof(snum), "?"); - snprintf(logname, sizeof(logname), "faithd %s", snum); - snprintf(procname, sizeof(procname), "accepting port %s", snum); + (void)snprintf(logname, sizeof(logname), "faithd %s", snum); + (void)snprintf(procname, sizeof(procname), "accepting port %s", snum); openlog(logname, LOG_PID | LOG_NOWAIT, LOG_DAEMON); if (argc >= MAXARGV) { @@ -197,13 +192,13 @@ serverarg[i] = NULL; error = setsockopt(STDIN_FILENO, SOL_SOCKET, SO_OOBINLINE, &on, - sizeof(on)); + (socklen_t)sizeof(on)); if (error < 0) { exit_failure("setsockopt(SO_OOBINLINE): %s", strerror(errno)); /*NOTREACHED*/ } - play_child(STDIN_FILENO, (struct sockaddr *)&from); + play_child(STDIN_FILENO, (void *)&from); exit_failure("should not reach here"); return 0; /*dummy!*/ } @@ -263,7 +258,7 @@ exit_stderr("not enough core"); } serverarg[i] = NULL; - /* fall throuth */ + /*FALLTHROUGH*/ case 1: /* no local service */ service = argv[NUMPRT]; break; @@ -290,23 +285,27 @@ #ifdef IPV6_FAITH if (res->ai_family == AF_INET6) { - error = setsockopt(s_wld, IPPROTO_IPV6, IPV6_FAITH, &on, sizeof(on)); + error = setsockopt(s_wld, IPPROTO_IPV6, IPV6_FAITH, &on, + (socklen_t)sizeof(on)); if (error == -1) exit_failure("setsockopt(IPV6_FAITH): %s", strerror(errno)); } #endif - error = setsockopt(s_wld, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); + error = setsockopt(s_wld, SOL_SOCKET, SO_REUSEADDR, &on, + (socklen_t)sizeof(on)); if (error == -1) exit_failure("setsockopt(SO_REUSEADDR): %s", strerror(errno)); - error = setsockopt(s_wld, SOL_SOCKET, SO_OOBINLINE, &on, sizeof(on)); + error = setsockopt(s_wld, SOL_SOCKET, SO_OOBINLINE, &on, + (socklen_t)sizeof(on)); if (error == -1) exit_failure("setsockopt(SO_OOBINLINE): %s", strerror(errno)); #ifdef IPV6_V6ONLY - error = setsockopt(s_wld, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)); + error = setsockopt(s_wld, IPPROTO_IPV6, IPV6_V6ONLY, &on, + (socklen_t)sizeof(on)); if (error == -1) exit_failure("setsockopt(IPV6_V6ONLY): %s", strerror(errno)); #endif @@ -331,14 +330,13 @@ * Everything is OK. */ - snprintf(logname, sizeof(logname), "faithd %s", service); - snprintf(procname, sizeof(procname), "accepting port %s", service); + (void)snprintf(logname, sizeof(logname), "faithd %s", service); + (void)snprintf(procname, sizeof(procname), "accepting port %s", service); openlog(logname, LOG_PID | LOG_NOWAIT, LOG_DAEMON); syslog(LOG_INFO, "Staring faith daemon for %s port", service); play_service(s_wld); - /* NOTREACHED */ - exit(1); /*pacify gcc*/ + return 1; } static void @@ -368,7 +366,7 @@ } #endif - error = poll(pfd, sizeof(pfd)/sizeof(pfd[0]), INFTIM); + error = poll(pfd, (unsigned int)(sizeof(pfd) / sizeof(pfd[0])), INFTIM); if (error < 0) { if (errno == EINTR) goto again; @@ -385,7 +383,7 @@ if (pfd[0].revents & POLLIN) { len = sizeof(srcaddr); - s_src = accept(s_wld, (struct sockaddr *)&srcaddr, &len); + s_src = accept(s_wld, (void *)&srcaddr, &len); if (s_src < 0) { if (errno == ECONNABORTED) goto again; @@ -393,8 +391,8 @@ /*NOTREACHED*/ } if (srcaddr.ss_family == AF_INET6 && - IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&srcaddr)->sin6_addr)) { - close(s_src); + IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)(void *)&srcaddr)->sin6_addr)) { + (void)close(s_src); syslog(LOG_ERR, "connection from IPv4 mapped address?"); goto again; } @@ -403,15 +401,15 @@ if (child_pid == 0) { /* child process */ - close(s_wld); + (void)close(s_wld); closelog(); openlog(logname, LOG_PID | LOG_NOWAIT, LOG_DAEMON); - play_child(s_src, (struct sockaddr *)&srcaddr); + play_child(s_src, (void *)&srcaddr); exit_failure("should never reach here"); /*NOTREACHED*/ } else { /* parent process */ - close(s_src); + (void)close(s_src); if (child_pid == -1) syslog(LOG_ERR, "can't fork"); } @@ -436,38 +434,38 @@ tv.tv_sec = 1; tv.tv_usec = 0; - getnameinfo(srcaddr, srcaddr->sa_len, - src, sizeof(src), NULL, 0, NI_NUMERICHOST); + (void)getnameinfo(srcaddr, (socklen_t)srcaddr->sa_len, + src, (socklen_t)sizeof(src), NULL, 0, NI_NUMERICHOST); syslog(LOG_INFO, "accepted a client from %s", src); - error = getsockname(s_src, (struct sockaddr *)&dstaddr6, &len); + error = getsockname(s_src, (void *)&dstaddr6, &len); if (error == -1) { exit_failure("getsockname: %s", strerror(errno)); /*NOTREACHED*/ } - getnameinfo((struct sockaddr *)&dstaddr6, len, - dst6, sizeof(dst6), NULL, 0, NI_NUMERICHOST); + (void)getnameinfo((void *)&dstaddr6, len, + dst6, (socklen_t)sizeof(dst6), NULL, 0, NI_NUMERICHOST); syslog(LOG_INFO, "the client is connecting to %s", dst6); - if (!faith_prefix((struct sockaddr *)&dstaddr6)) { + if (!faith_prefix((void *)&dstaddr6)) { if (serverpath) { /* * Local service */ syslog(LOG_INFO, "executing local %s", serverpath); if (!inetd) { - dup2(s_src, 0); - close(s_src); - dup2(0, 1); - dup2(0, 2); + (void)dup2(s_src, 0); + (void)close(s_src); + (void)dup2(0, 1); + (void)dup2(0, 2); } - execv(serverpath, serverarg); + (void)execv(serverpath, serverarg); syslog(LOG_ERR, "execv %s: %s", serverpath, strerror(errno)); _exit(EXIT_FAILURE); } else { - close(s_src); + (void)close(s_src); exit_success("no local service for %s", service); } } @@ -476,29 +474,29 @@ * Act as a translator */ - switch (((struct sockaddr *)&dstaddr6)->sa_family) { + switch (((struct sockaddr *)(void *)&dstaddr6)->sa_family) { case AF_INET6: - if (!map6to4((struct sockaddr_in6 *)&dstaddr6, - (struct sockaddr_in *)&dstaddr4)) { - close(s_src); + if (!map6to4((struct sockaddr_in6 *)(void *)&dstaddr6, + (struct sockaddr_in *)(void *)&dstaddr4)) { + (void)close(s_src); exit_failure("map6to4 failed"); /*NOTREACHED*/ } syslog(LOG_INFO, "translating from v6 to v4"); break; default: - close(s_src); + (void)close(s_src); exit_failure("family not supported"); /*NOTREACHED*/ } - sa4 = (struct sockaddr *)&dstaddr4; - getnameinfo(sa4, sa4->sa_len, - dst4, sizeof(dst4), NULL, 0, NI_NUMERICHOST); + sa4 = (void *)&dstaddr4; + (void)getnameinfo(sa4, (socklen_t)sa4->sa_len, + dst4, (socklen_t)sizeof(dst4), NULL, 0, NI_NUMERICHOST); conf = config_match(srcaddr, sa4); if (!conf || !conf->permit) { - close(s_src); + (void)close(s_src); if (conf) { exit_failure("translation to %s not permitted for %s", dst4, prefix_string(&conf->match)); @@ -514,9 +512,9 @@ setproctitle("port %s, %s -> %s", service, src, dst4); if (sa4->sa_family == AF_INET6) - hport = ntohs(((struct sockaddr_in6 *)&dstaddr4)->sin6_port); + hport = ntohs(((struct sockaddr_in6 *)(void *)&dstaddr4)->sin6_port); else /* AF_INET */ - hport = ntohs(((struct sockaddr_in *)&dstaddr4)->sin_port); + hport = ntohs(((struct sockaddr_in *)(void *)&dstaddr4)->sin_port); if (pflag) s_dst = rresvport_af(&nresvport, sa4->sa_family); @@ -528,31 +526,34 @@ } if (conf->src.a.ss_family) { - if (bind(s_dst, (const struct sockaddr *)&conf->src.a, - conf->src.a.ss_len) < 0) { + if (bind(s_dst, (const void*)&conf->src.a, + (socklen_t)conf->src.a.ss_len) < 0) { exit_failure("bind: %s", strerror(errno)); /*NOTREACHED*/ } } - error = setsockopt(s_dst, SOL_SOCKET, SO_OOBINLINE, &on, sizeof(on)); + error = setsockopt(s_dst, SOL_SOCKET, SO_OOBINLINE, &on, + (socklen_t)sizeof(on)); if (error < 0) { exit_failure("setsockopt(SO_OOBINLINE): %s", strerror(errno)); /*NOTREACHED*/ } - error = setsockopt(s_src, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); + error = setsockopt(s_src, SOL_SOCKET, SO_SNDTIMEO, &tv, + (socklen_t)sizeof(tv)); if (error < 0) { exit_failure("setsockopt(SO_SNDTIMEO): %s", strerror(errno)); /*NOTREACHED*/ } - error = setsockopt(s_dst, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); + error = setsockopt(s_dst, SOL_SOCKET, SO_SNDTIMEO, &tv, + (socklen_t)sizeof(tv)); if (error < 0) { exit_failure("setsockopt(SO_SNDTIMEO): %s", strerror(errno)); /*NOTREACHED*/ } - error = connect(s_dst, sa4, sa4->sa_len); + error = connect(s_dst, sa4, (socklen_t)sa4->sa_len); if (error < 0) { exit_failure("connect: %s", strerror(errno)); /*NOTREACHED*/ @@ -592,11 +593,8 @@ /*NOTREACHED*/ } - if (memcmp(dst, &faith_prefix, - sizeof(struct in6_addr) - sizeof(struct in_addr) == 0) { - return 1; - } - return 0; + return memcmp(dst, &faith_prefix, + sizeof(struct in6_addr) - sizeof(struct in_addr)) == 0; #else struct myaddrs *p; struct sockaddr_in6 *sin6; @@ -605,7 +603,7 @@ struct sockaddr_in *dst4; struct sockaddr_in dstmap; - dst6 = (struct sockaddr_in6 *)dst; + dst6 = (void *)dst; if (dst->sa_family == AF_INET6 && IN6_IS_ADDR_V4MAPPED(&dst6->sin6_addr)) { /* ugly... */ @@ -614,15 +612,15 @@ dstmap.sin_len = sizeof(dstmap); memcpy(&dstmap.sin_addr, &dst6->sin6_addr.s6_addr[12], sizeof(dstmap.sin_addr)); - dst = (struct sockaddr *)&dstmap; + dst = (void *)&dstmap; } - dst6 = (struct sockaddr_in6 *)dst; - dst4 = (struct sockaddr_in *)dst; + dst6 = (void *)dst; + dst4 = (void *)dst; for (p = myaddrs; p; p = p->next) { - sin6 = (struct sockaddr_in6 *)p->addr; - sin4 = (struct sockaddr_in *)p->addr; + sin6 = (void *)p->addr; + sin4 = (void *)p->addr; if (p->addr->sa_len != dst->sa_len || p->addr->sa_family != dst->sa_family) @@ -665,6 +663,7 @@ static void +/*ARGSUSED*/ sig_child(int sig) { int status; @@ -677,6 +676,7 @@ } void +/*ARGSUSED*/ sig_terminate(int sig) { syslog(LOG_INFO, "Terminating faith daemon"); @@ -694,11 +694,11 @@ exit_stderr("daemon: %s", strerror(errno)); #ifdef SA_NOCLDWAIT - memset(&sa, 0, sizeof(sa)); + (void)memset(&sa, 0, sizeof(sa)); sa.sa_handler = sig_child; sa.sa_flags = SA_NOCLDWAIT; - sigemptyset(&sa.sa_mask); - sigaction(SIGCHLD, &sa, (struct sigaction *)0); + (void)sigemptyset(&sa.sa_mask); + (void)sigaction(SIGCHLD, &sa, (struct sigaction *)0); #else if (signal(SIGCHLD, sig_child) == SIG_ERR) { exit_failure("signal CHLD: %s", strerror(errno)); @@ -716,12 +716,11 @@ exit_stderr(const char *fmt, ...) { va_list ap; - char buf[BUFSIZ]; va_start(ap, fmt); - vsnprintf(buf, sizeof(buf), fmt, ap); + (void)fprintf(stderr, "%s: ", getprogname()); + (void)vfprintf(stderr, fmt, ap); va_end(ap); - fprintf(stderr, "%s\n", buf); exit(EXIT_FAILURE); } @@ -729,12 +728,10 @@ exit_failure(const char *fmt, ...) { va_list ap; - char buf[BUFSIZ]; va_start(ap, fmt); - vsnprintf(buf, sizeof(buf), fmt, ap); + vsyslog(LOG_ERR, fmt, ap); va_end(ap); - syslog(LOG_ERR, "%s", buf); exit(EXIT_FAILURE); } @@ -742,18 +739,16 @@ exit_success(const char *fmt, ...) { va_list ap; - char buf[BUFSIZ]; va_start(ap, fmt); - vsnprintf(buf, sizeof(buf), fmt, ap); + vsyslog(LOG_INFO, fmt, ap); va_end(ap); - syslog(LOG_INFO, "%s", buf); exit(EXIT_SUCCESS); } #ifdef USE_ROUTE static void -grab_myaddrs() +grab_myaddrs(void) { struct ifaddrs *ifap, *ifa; struct myaddrs *p; @@ -781,14 +776,15 @@ } memcpy(p + 1, ifa->ifa_addr, ifa->ifa_addr->sa_len); p->next = myaddrs; - p->addr = (struct sockaddr *)(p + 1); + p->addr = (void *)(p + 1); #ifdef __KAME__ if (ifa->ifa_addr->sa_family == AF_INET6) { - sin6 = (struct sockaddr_in6 *)p->addr; + sin6 = (void *)p->addr; if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr) || IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr)) { sin6->sin6_scope_id = - ntohs(*(u_int16_t *)&sin6->sin6_addr.s6_addr[2]); + ntohs(*(uint16_t *)(void *) + &sin6->sin6_addr.s6_addr[3]); sin6->sin6_addr.s6_addr[2] = 0; sin6->sin6_addr.s6_addr[3] = 0; } @@ -797,9 +793,9 @@ myaddrs = p; if (dflag) { char hbuf[NI_MAXHOST]; - getnameinfo(p->addr, p->addr->sa_len, - hbuf, sizeof(hbuf), NULL, 0, - NI_NUMERICHOST); + (void)getnameinfo(p->addr, (socklen_t)p->addr->sa_len, + hbuf, (socklen_t)sizeof(hbuf), NULL, 0, + NI_NUMERICHOST); syslog(LOG_INFO, "my interface: %s %s", hbuf, ifa->ifa_name); } @@ -809,7 +805,7 @@ } static void -free_myaddrs() +free_myaddrs(void) { struct myaddrs *p, *q; @@ -823,10 +819,10 @@ } static void -update_myaddrs() +update_myaddrs(void) { char msg[BUFSIZ]; - int len; + ssize_t len; struct rt_msghdr *rtm; len = read(sockfd, msg, sizeof(msg)); @@ -834,14 +830,14 @@ syslog(LOG_ERR, "read(PF_ROUTE) failed"); return; } - rtm = (struct rt_msghdr *)msg; + rtm = (void *)msg; if (len < 4 || len < rtm->rtm_msglen) { syslog(LOG_ERR, "read(PF_ROUTE) short read"); return; } if (rtm->rtm_version != RTM_VERSION) { syslog(LOG_ERR, "routing socket version mismatch"); - close(sockfd); + (void)close(sockfd); sockfd = 0; return; } @@ -862,9 +858,10 @@ #endif /*USE_ROUTE*/ static void -usage() +usage(void) { - fprintf(stderr, "usage: %s [-dp] [-f conf] service [serverpath [serverargs]]\n", - faithdname); + (void)fprintf(stderr, + "Usage: %s [-dp] [-f conf] service [serverpath [serverargs]]\n", + getprogname()); exit(0); } Index: src/usr.sbin/faithd/faithd.h diff -u src/usr.sbin/faithd/faithd.h:1.9 src/usr.sbin/faithd/faithd.h:1.10 --- src/usr.sbin/faithd/faithd.h:1.9 Thu May 9 10:24:03 2002 +++ src/usr.sbin/faithd/faithd.h Fri Nov 26 13:58:43 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: faithd.h,v 1.9 2002/05/09 14:24:03 itojun Exp $ */ +/* $NetBSD: faithd.h,v 1.10 2010/11/26 18:58:43 christos Exp $ */ /* $KAME: faithd.h,v 1.9 2002/05/09 09:41:24 itojun Exp $ */ /* @@ -33,13 +33,13 @@ extern char logname[]; extern int dflag; -extern void tcp_relay __P((int, int, const char *)); -extern void ftp_relay __P((int, int)); -extern int ftp_active __P((int, int, int *, int *)); -extern int ftp_passive __P((int, int, int *, int *)); -extern void exit_success __P((const char *, ...)) +extern void tcp_relay(int, int, const char *); +extern void ftp_relay(int, int); +extern int ftp_active(int, int, int *, int *); +extern int ftp_passive(int, int, int *, int *); +extern void exit_success(const char *, ...) __attribute__((__format__(__printf__, 1, 2))); -extern void exit_failure __P((const char *, ...)) +extern void exit_failure(const char *, ...) __attribute__((__format__(__printf__, 1, 2))); #define DEFAULT_PORT_NAME "telnet" Index: src/usr.sbin/faithd/tcp.c diff -u src/usr.sbin/faithd/tcp.c:1.9 src/usr.sbin/faithd/tcp.c:1.10 --- src/usr.sbin/faithd/tcp.c:1.9 Tue Aug 20 19:02:45 2002 +++ src/usr.sbin/faithd/tcp.c Fri Nov 26 13:58:43 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: tcp.c,v 1.9 2002/08/20 23:02:45 itojun Exp $ */ +/* $NetBSD: tcp.c,v 1.10 2010/11/26 18:58:43 christos Exp $ */ /* $KAME: tcp.c,v 1.10 2002/08/20 23:01:01 itojun Exp $ */ /* @@ -54,7 +54,8 @@ static char tcpbuf[16*1024]; /* bigger than MSS and may be lesser than window size */ -static int tblen, tboff, oob_exists; +static ssize_t tblen, tboff; +static int oob_exists; static fd_set readfds, writefds, exceptfds; static char atmark_buf[2]; static pid_t cpid = (pid_t)0; @@ -62,12 +63,12 @@ volatile time_t child_lastactive = (time_t)0; static time_t parent_lastactive = (time_t)0; -static void sig_ctimeout __P((int)); -static void sig_child __P((int)); -static void notify_inactive __P((void)); -static void notify_active __P((void)); -static void send_data __P((int, int, const char *, int)); -static void relay __P((int, int, const char *, int)); +static void sig_ctimeout(int); +static void sig_child(int); +static void notify_inactive(void); +static void notify_active(void); +static void send_data(int, int, const char *, int); +static void relay(int, int, const char *, int); /* * Inactivity timer: @@ -76,6 +77,7 @@ * - parent side (ppid == 0) will check the last SIGUSR1 it have seen. */ static void +/*ARGSUSED*/ sig_ctimeout(int sig) { /* parent side: record notification from the child */ @@ -86,6 +88,7 @@ /* parent will terminate if child dies. */ static void +/*ARGSUSED*/ sig_child(int sig) { int status; @@ -118,9 +121,9 @@ if (FAITH_TIMEOUT < t - child_lastactive && FAITH_TIMEOUT < t - parent_lastactive) { /* both side timeouted */ - signal(SIGCHLD, SIG_DFL); - kill(cpid, SIGTERM); - wait(NULL); + (void)signal(SIGCHLD, SIG_DFL); + (void)kill(cpid, SIGTERM); + (void)wait(NULL); exit_failure("connection timeout"); /* NOTREACHED */ } @@ -147,9 +150,10 @@ } static void +/*ARGSUSED*/ send_data(int s_rcv, int s_snd, const char *service, int direction) { - int cc; + ssize_t cc; if (oob_exists) { cc = send(s_snd, atmark_buf, 1, MSG_OOB); @@ -162,7 +166,7 @@ } for (; tboff < tblen; tboff += cc) { - cc = write(s_snd, tcpbuf + tboff, tblen - tboff); + cc = write(s_snd, tcpbuf + tboff, (size_t)(tblen - tboff)); if (cc < 0) goto retry_or_err; } @@ -201,7 +205,7 @@ FD_ZERO(&readfds); FD_ZERO(&writefds); FD_ZERO(&exceptfds); - fcntl(s_snd, F_SETFD, O_NONBLOCK); + (void)fcntl(s_snd, F_SETFD, O_NONBLOCK); oreadfds = readfds; owritefds = writefds; oexceptfds = exceptfds; if (s_rcv >= FD_SETSIZE) exit_failure("descriptor too big"); @@ -235,8 +239,8 @@ if (FD_ISSET(s_rcv, &exceptfds)) { error = ioctl(s_rcv, SIOCATMARK, &atmark); if (error != -1 && atmark == 1) { - int cc; - oob_read_retry: + ssize_t cc; +oob_read_retry: cc = read(s_rcv, atmark_buf, 1); if (cc == 1) { if (s_rcv >= FD_SETSIZE) @@ -269,10 +273,10 @@ /* NOTREACHED */ case 0: /* to close opposite-direction relay process */ - shutdown(s_snd, 0); + (void)shutdown(s_snd, 0); - close(s_rcv); - close(s_snd); + (void)close(s_rcv); + (void)close(s_snd); exit_success("terminating %s relay", service); /* NOTREACHED */ default: @@ -314,8 +318,8 @@ default: /* parent process: relay coming traffic */ ppid = (pid_t)0; - signal(SIGUSR1, sig_ctimeout); - signal(SIGCHLD, sig_child); + (void)signal(SIGUSR1, sig_ctimeout); + (void)signal(SIGCHLD, sig_child); relay(s_dst, s_src, service, 0); /* NOTREACHED */ } Index: src/usr.sbin/faithd/ftp.c diff -u src/usr.sbin/faithd/ftp.c:1.18 src/usr.sbin/faithd/ftp.c:1.19 --- src/usr.sbin/faithd/ftp.c:1.18 Sun Apr 19 02:09:42 2009 +++ src/usr.sbin/faithd/ftp.c Fri Nov 26 13:58:43 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: ftp.c,v 1.18 2009/04/19 06:09:42 lukem Exp $ */ +/* $NetBSD: ftp.c,v 1.19 2010/11/26 18:58:43 christos Exp $ */ /* $KAME: ftp.c,v 1.23 2003/08/19 21:20:33 itojun Exp $ */ /* @@ -52,7 +52,6 @@ #include "faithd.h" static char rbuf[MSS]; -static char sbuf[MSS]; static int passivemode = 0; static int wport4 = -1; /* listen() to active */ static int wport6 = -1; /* listen() to passive */ @@ -64,19 +63,18 @@ enum state { NONE, LPRT, EPRT, LPSV, EPSV }; -static int ftp_activeconn __P((void)); -static int ftp_passiveconn __P((void)); -static int ftp_copy __P((int, int)); -static int ftp_copyresult __P((int, int, enum state)); -static int ftp_copycommand __P((int, int, enum state *)); +static int ftp_activeconn(void); +static int ftp_passiveconn(void); +static ssize_t ftp_copy(int, int); +static ssize_t ftp_copyresult(int, int, enum state); +static ssize_t ftp_copycommand(int, int, enum state *); void ftp_relay(int ctl6, int ctl4) { struct pollfd pfd[6]; - int error; + ssize_t error; enum state state = NONE; - struct timeval tv; syslog(LOG_INFO, "starting ftp control connection"); @@ -110,10 +108,8 @@ pfd[4].fd = pfd[5].fd = -1; pfd[4].events = pfd[5].events = 0; #endif - tv.tv_sec = FAITH_TIMEOUT; - tv.tv_usec = 0; - - error = poll(pfd, sizeof(pfd)/sizeof(pfd[0]), tv.tv_sec * 1000); + error = poll(pfd, (unsigned int)(sizeof(pfd) / sizeof(pfd[0])), + FAITH_TIMEOUT * 1000); if (error == -1) { exit_failure("poll: %s", strerror(errno)); } @@ -173,11 +169,11 @@ goto bad; case 0: if (port4 >= 0) { - close(port4); + (void)close(port4); port4 = -1; } if (port6 >= 0) { - close(port6); + (void)close(port6); port6 = -1; } syslog(LOG_INFO, "terminating data connection"); @@ -199,11 +195,11 @@ goto bad; case 0: if (port4 >= 0) { - close(port4); + (void)close(port4); port4 = -1; } if (port6 >= 0) { - close(port6); + (void)close(port6); port6 = -1; } syslog(LOG_INFO, "terminating data connection"); @@ -240,17 +236,15 @@ socklen_t n; int error; struct pollfd pfd[1]; - struct timeval timeout; struct sockaddr *sa; /* get active connection from server */ pfd[0].fd = wport4; pfd[0].events = POLLIN; - timeout.tv_sec = 120; - timeout.tv_usec = 0; n = sizeof(data4); - if (poll(pfd, sizeof(pfd)/sizeof(pfd[0]), timeout.tv_sec * 1000) == 0 || - (port4 = accept(wport4, (struct sockaddr *)&data4, &n)) < 0) + if (poll(pfd, (unsigned int)(sizeof(pfd) / sizeof(pfd[0])), + 120000) == 0 || + (port4 = accept(wport4, (void *)&data4, &n)) < 0) { (void)close(wport4); wport4 = -1; @@ -259,7 +253,7 @@ } /* ask active connection to client */ - sa = (struct sockaddr *)&data6; + sa = (void *)&data6; port6 = socket(sa->sa_family, SOCK_STREAM, 0); if (port6 == -1) { (void)close(port4); @@ -268,7 +262,7 @@ syslog(LOG_INFO, "active mode data connection failed"); return -1; } - error = connect(port6, sa, sa->sa_len); + error = connect(port6, sa, (socklen_t)sa->sa_len); if (error < 0) { (void)close(port6); (void)close(port4); @@ -288,17 +282,15 @@ socklen_t len; int error; struct pollfd pfd[1]; - struct timeval timeout; struct sockaddr *sa; /* get passive connection from client */ pfd[0].fd = wport6; pfd[0].events = POLLIN; - timeout.tv_sec = 120; - timeout.tv_usec = 0; len = sizeof(data6); - if (poll(pfd, sizeof(pfd)/sizeof(pfd[0]), timeout.tv_sec * 1000) == 0 || - (port6 = accept(wport6, (struct sockaddr *)&data6, &len)) < 0) + if (poll(pfd, (unsigned int)(sizeof(pfd) / sizeof(pfd[0])), + 120000) == 0 || + (port6 = accept(wport6, (void *)&data6, &len)) < 0) { (void)close(wport6); wport6 = -1; @@ -307,7 +299,7 @@ } /* ask passive connection to server */ - sa = (struct sockaddr *)&data4; + sa = (void *)&data4; port4 = socket(sa->sa_family, SOCK_STREAM, 0); if (port4 == -1) { (void)close(wport6); @@ -316,7 +308,7 @@ syslog(LOG_INFO, "passive mode data connection failed"); return -1; } - error = connect(port4, sa, sa->sa_len); + error = connect(port4, sa, (socklen_t)sa->sa_len); if (error < 0) { (void)close(wport6); (void)close(port4); @@ -330,10 +322,11 @@ return 0; } -static int +static ssize_t ftp_copy(int src, int dst) { - int error, atmark, n; + int error, atmark; + ssize_t n; /* OOB data handling */ error = ioctl(src, SIOCATMARK, &atmark); @@ -341,12 +334,12 @@ n = read(src, rbuf, 1); if (n == -1) goto bad; - send(dst, rbuf, n, MSG_OOB); + (void)send(dst, rbuf, (size_t)n, MSG_OOB); #if 0 n = read(src, rbuf, sizeof(rbuf)); if (n == -1) goto bad; - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; #endif } @@ -357,7 +350,7 @@ case 0: return n; default: - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; } @@ -367,10 +360,11 @@ return 0; /* to make gcc happy */ } -static int +static ssize_t ftp_copyresult(int src, int dst, enum state state) { - int error, atmark, n; + int error, atmark; + ssize_t n; socklen_t len; char *param; int code; @@ -383,12 +377,12 @@ n = read(src, rbuf, 1); if (n == -1) goto bad; - send(dst, rbuf, n, MSG_OOB); + (void)send(dst, rbuf, (size_t)n, MSG_OOB); #if 0 n = read(src, rbuf, sizeof(rbuf)); if (n == -1) goto bad; - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; #endif } @@ -405,14 +399,14 @@ for (i = 0; i < 3; i++) { if (!isdigit((unsigned char)*p)) { /* invalid reply */ - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; } p++; } if (!isspace((unsigned char)*p)) { /* invalid reply */ - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; } code = atoi(rbuf); @@ -428,13 +422,13 @@ if (!passivemode && rbuf[0] == '1') { if (ftp_activeconn() < 0) { n = snprintf(rbuf, sizeof(rbuf), - "425 Cannot open data connetion\r\n"); + "425 Cannot open data connetion\r\n"); if (n < 0 || n >= (int)sizeof(rbuf)) n = 0; } } if (n) - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; case LPRT: case EPRT: @@ -449,7 +443,7 @@ (void)close(wport4); wport4 = -1; } - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; case LPSV: case EPSV: @@ -461,7 +455,7 @@ passivefail0: (void)close(wport6); wport6 = -1; - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; } @@ -488,42 +482,37 @@ /* keep PORT parameter */ memset(&data4, 0, sizeof(data4)); - sin = (struct sockaddr_in *)&data4; + sin = (void *)&data4; sin->sin_len = sizeof(*sin); sin->sin_family = AF_INET; sin->sin_addr.s_addr = 0; for (n = 0; n < 4; n++) { - sin->sin_addr.s_addr |= - htonl((ho[n] & 0xff) << ((3 - n) * 8)); + sin->sin_addr.s_addr |= htonl(((uint32_t)(ho[n] & 0xff) + << (int)((3 - n) * 8))); } sin->sin_port = htons(((po[0] & 0xff) << 8) | (po[1] & 0xff)); /* get ready for passive data connection */ memset(&data6, 0, sizeof(data6)); - sin6 = (struct sockaddr_in6 *)&data6; + sin6 = (void *)&data6; sin6->sin6_len = sizeof(*sin6); sin6->sin6_family = AF_INET6; wport6 = socket(sin6->sin6_family, SOCK_STREAM, 0); if (wport6 == -1) { passivefail: - n = snprintf(sbuf, sizeof(sbuf), - "500 could not translate from PASV\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, + "500 could not translate from PASV\r\n"); } #ifdef IPV6_FAITH { int on = 1; error = setsockopt(wport6, IPPROTO_IPV6, IPV6_FAITH, - &on, sizeof(on)); + &on, (socklen_t)sizeof(on)); if (error == -1) exit_failure("setsockopt(IPV6_FAITH): %s", strerror(errno)); } #endif - error = bind(wport6, (struct sockaddr *)sin6, sin6->sin6_len); + error = bind(wport6, (void *)sin6, (socklen_t)sin6->sin6_len); if (error == -1) { (void)close(wport6); wport6 = -1; @@ -541,51 +530,42 @@ * addr from dst, port from wport6 */ len = sizeof(data6); - error = getsockname(wport6, (struct sockaddr *)&data6, &len); + error = getsockname(wport6, (void *)&data6, &len); if (error == -1) { (void)close(wport6); wport6 = -1; goto passivefail; } - sin6 = (struct sockaddr_in6 *)&data6; + sin6 = (void *)&data6; port = sin6->sin6_port; len = sizeof(data6); - error = getsockname(dst, (struct sockaddr *)&data6, &len); + error = getsockname(dst, (void *)&data6, &len); if (error == -1) { (void)close(wport6); wport6 = -1; goto passivefail; } - sin6 = (struct sockaddr_in6 *)&data6; + sin6 = (void *)&data6; sin6->sin6_port = port; if (state == LPSV) { - a = (char *)&sin6->sin6_addr; - p = (char *)&sin6->sin6_port; - n = snprintf(sbuf, sizeof(sbuf), -"228 Entering Long Passive Mode (%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)\r\n", - 6, 16, UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]), - UC(a[4]), UC(a[5]), UC(a[6]), UC(a[7]), - UC(a[8]), UC(a[9]), UC(a[10]), UC(a[11]), - UC(a[12]), UC(a[13]), UC(a[14]), UC(a[15]), - 2, UC(p[0]), UC(p[1])); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(dst, sbuf, n); + a = (void *)&sin6->sin6_addr; + p = (void *)&sin6->sin6_port; passivemode = 1; - return n; + return dprintf(dst, + "228 Entering Long Passive Mode (%d,%d,%d,%d,%d,%d," + "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)\r\n", + 6, 16, UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]), + UC(a[4]), UC(a[5]), UC(a[6]), UC(a[7]), + UC(a[8]), UC(a[9]), UC(a[10]), UC(a[11]), + UC(a[12]), UC(a[13]), UC(a[14]), UC(a[15]), + 2, UC(p[0]), UC(p[1])); } else { - n = snprintf(sbuf, sizeof(sbuf), -"229 Entering Extended Passive Mode (|||%d|)\r\n", - ntohs(sin6->sin6_port)); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(dst, sbuf, n); passivemode = 1; - return n; + return dprintf(dst, + "229 Entering Extended Passive Mode (|||%d|)\r\n", + ntohs(sin6->sin6_port)); } } } @@ -596,10 +576,11 @@ return 0; /* to make gcc happy */ } -static int +static ssize_t ftp_copycommand(int src, int dst, enum state *state) { - int error, atmark, n; + int error, atmark; + ssize_t n; socklen_t len; unsigned int af, hal, ho[16], pal, po[2]; char *a, *p, *q; @@ -616,12 +597,12 @@ n = read(src, rbuf, 1); if (n == -1) goto bad; - send(dst, rbuf, n, MSG_OOB); + (void)send(dst, rbuf, (size_t)n, MSG_OOB); #if 0 n = read(src, rbuf, sizeof(rbuf)); if (n == -1) goto bad; - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; #endif } @@ -632,7 +613,7 @@ rbuf[n] = '\0'; if (n < 4) { - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; } @@ -644,7 +625,7 @@ for (i = 0; i < 4; i++) { if (!isalpha((unsigned char)*p)) { /* invalid command */ - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; } *q++ = islower((unsigned char)*p) ? toupper((unsigned char)*p) : *p; @@ -652,7 +633,7 @@ } if (!isspace((unsigned char)*p)) { /* invalid command */ - write(dst, rbuf, n); + (void)write(dst, rbuf, (size_t)n); return n; } *q = '\0'; @@ -678,35 +659,25 @@ wport4 = wport6 = port4 = port6 = -1; if (epsvall) { - n = snprintf(sbuf, sizeof(sbuf), "501 %s disallowed in EPSV ALL\r\n", - cmd); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, "501 %s disallowed in EPSV ALL\r\n", + cmd); } n = sscanf(param, -"%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u", - &af, &hal, &ho[0], &ho[1], &ho[2], &ho[3], - &ho[4], &ho[5], &ho[6], &ho[7], - &ho[8], &ho[9], &ho[10], &ho[11], - &ho[12], &ho[13], &ho[14], &ho[15], - &pal, &po[0], &po[1]); + "%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u," + "%u,%u,%u", &af, &hal, &ho[0], &ho[1], &ho[2], &ho[3], + &ho[4], &ho[5], &ho[6], &ho[7], + &ho[8], &ho[9], &ho[10], &ho[11], + &ho[12], &ho[13], &ho[14], &ho[15], + &pal, &po[0], &po[1]); if (n != 21 || af != 6 || hal != 16|| pal != 2) { - n = snprintf(sbuf, sizeof(sbuf), - "501 illegal parameter to LPRT\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, + "501 illegal parameter to LPRT\r\n"); } /* keep LPRT parameter */ memset(&data6, 0, sizeof(data6)); - sin6 = (struct sockaddr_in6 *)&data6; + sin6 = (void *)&data6; sin6->sin6_len = sizeof(*sin6); sin6->sin6_family = AF_INET6; for (n = 0; n < 16; n++) @@ -716,25 +687,20 @@ sendport: /* get ready for active data connection */ len = sizeof(data4); - error = getsockname(dst, (struct sockaddr *)&data4, &len); + error = getsockname(dst, (void *)&data4, &len); if (error == -1) { lprtfail: - n = snprintf(sbuf, sizeof(sbuf), - "500 could not translate to PORT\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, + "500 could not translate to PORT\r\n"); } - if (((struct sockaddr *)&data4)->sa_family != AF_INET) + if (((struct sockaddr *)(void *)&data4)->sa_family != AF_INET) goto lprtfail; - sin = (struct sockaddr_in *)&data4; + sin = (void *)&data4; sin->sin_port = 0; wport4 = socket(sin->sin_family, SOCK_STREAM, 0); if (wport4 == -1) goto lprtfail; - error = bind(wport4, (struct sockaddr *)sin, sin->sin_len); + error = bind(wport4, (void *)sin, (socklen_t)sin->sin_len); if (error == -1) { (void)close(wport4); wport4 = -1; @@ -749,30 +715,24 @@ /* transmit PORT */ len = sizeof(data4); - error = getsockname(wport4, (struct sockaddr *)&data4, &len); + error = getsockname(wport4, (void *)&data4, &len); if (error == -1) { (void)close(wport4); wport4 = -1; goto lprtfail; } - if (((struct sockaddr *)&data4)->sa_family != AF_INET) { + if (((struct sockaddr *)(void *)&data4)->sa_family != AF_INET) { (void)close(wport4); wport4 = -1; goto lprtfail; } - sin = (struct sockaddr_in *)&data4; - a = (char *)&sin->sin_addr; - p = (char *)&sin->sin_port; - n = snprintf(sbuf, sizeof(sbuf), "PORT %d,%d,%d,%d,%d,%d\r\n", - UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]), - UC(p[0]), UC(p[1])); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(dst, sbuf, n); + sin = (void *)&data4; + a = (void *)&sin->sin_addr; + p = (void *)&sin->sin_port; *state = nstate; passivemode = 0; - return n; + return dprintf(dst, "PORT %d,%d,%d,%d,%d,%d\r\n", + UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]), UC(p[0]), UC(p[1])); } else if (strcmp(cmd, "EPRT") == 0 && param) { /* * EPRT -> PORT @@ -789,13 +749,8 @@ wport4 = wport6 = port4 = port6 = -1; if (epsvall) { - n = snprintf(sbuf, sizeof(sbuf), "501 %s disallowed in EPSV ALL\r\n", - cmd); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, "501 %s disallowed in EPSV ALL\r\n", + cmd); } p = param; @@ -805,13 +760,8 @@ p++; if (!*p) { eprtparamfail: - n = snprintf(sbuf, sizeof(sbuf), - "501 illegal parameter to EPRT\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, + "501 illegal parameter to EPRT\r\n"); } *p++ = '\0'; hostp = p; @@ -829,13 +779,8 @@ n = sscanf(afp, "%d", &af); if (n != 1 || af != 2) { - n = snprintf(sbuf, sizeof(sbuf), - "501 unsupported address family to EPRT\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, + "501 unsupported address family to EPRT\r\n"); } memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; @@ -843,23 +788,14 @@ hints.ai_protocol = IPPROTO_TCP; error = getaddrinfo(hostp, portp, &hints, &res); if (error) { - n = snprintf(sbuf, sizeof(sbuf), - "501 EPRT: %s\r\n", gai_strerror(error)); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, + "501 EPRT: %s\r\n", gai_strerror(error)); } if (res->ai_next) { - n = snprintf(sbuf, sizeof(sbuf), - "501 EPRT: %s resolved to multiple addresses\r\n", hostp); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); freeaddrinfo(res); - return n; + return dprintf(src, + "501 EPRT: %s resolved to multiple addresses\r\n", + hostp); } memcpy(&data6, res->ai_addr, res->ai_addrlen); @@ -879,24 +815,14 @@ wport4 = wport6 = port4 = port6 = -1; if (epsvall) { - n = snprintf(sbuf, sizeof(sbuf), "501 %s disallowed in EPSV ALL\r\n", - cmd); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, "501 %s disallowed in EPSV ALL\r\n", + cmd); } - /* transmit PASV */ - n = snprintf(sbuf, sizeof(sbuf), "PASV\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(dst, sbuf, n); *state = LPSV; passivemode = 0; /* to be set to 1 later */ - return n; + /* transmit PASV */ + return dprintf(dst, "PASV\r\n"); } else if (strcmp(cmd, "EPSV") == 0 && !param) { /* * EPSV -> PASV @@ -907,36 +833,22 @@ (void)close(port6); wport4 = wport6 = port4 = port6 = -1; - n = snprintf(sbuf, sizeof(sbuf), "PASV\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(dst, sbuf, n); *state = EPSV; passivemode = 0; /* to be set to 1 later */ - return n; - } else if (strcmp(cmd, "EPSV") == 0 && param - && strncasecmp(param, "ALL", 3) == 0 && isspace((unsigned char)param[3])) { + return dprintf(dst, "PASV\r\n"); + } else if (strcmp(cmd, "EPSV") == 0 && param && + strncasecmp(param, "ALL", 3) == 0 && + isspace((unsigned char)param[3])) { /* * EPSV ALL */ epsvall = 1; - n = snprintf(sbuf, sizeof(sbuf), "200 EPSV ALL command successful.\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, "200 EPSV ALL command successful.\r\n"); } else if (strcmp(cmd, "PORT") == 0 || strcmp(cmd, "PASV") == 0) { /* * reject PORT/PASV */ - n = snprintf(sbuf, sizeof(sbuf), "502 %s not implemented.\r\n", cmd); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); - return n; + return dprintf(src, "502 %s not implemented.\r\n", cmd); } else if (passivemode && (strcmp(cmd, "STOR") == 0 || strcmp(cmd, "STOU") == 0 @@ -949,24 +861,18 @@ * mode data connection. */ + *state = NONE; if (ftp_passiveconn() < 0) { - n = snprintf(sbuf, sizeof(sbuf), "425 Cannot open data connetion\r\n"); - if (n < 0 || n >= (int)sizeof(sbuf)) - n = 0; - if (n) - write(src, sbuf, n); + return dprintf(src, + "425 Cannot open data connetion\r\n"); } else { /* simply relay the command */ - write(dst, rbuf, n); + return write(dst, rbuf, (size_t)n); } - - *state = NONE; - return n; } else { /* simply relay it */ *state = NONE; - write(dst, rbuf, n); - return n; + return write(dst, rbuf, (size_t)n); } bad: Index: src/usr.sbin/faithd/prefix.c diff -u src/usr.sbin/faithd/prefix.c:1.7 src/usr.sbin/faithd/prefix.c:1.8 --- src/usr.sbin/faithd/prefix.c:1.7 Sun Apr 19 02:09:42 2009 +++ src/usr.sbin/faithd/prefix.c Fri Nov 26 13:58:43 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: prefix.c,v 1.7 2009/04/19 06:09:42 lukem Exp $ */ +/* $NetBSD: prefix.c,v 1.8 2010/11/26 18:58:43 christos Exp $ */ /* $KAME: prefix.c,v 1.13 2003/09/02 22:50:17 itojun Exp $ */ /* @@ -63,7 +63,6 @@ char *p = NULL, *q, *r; struct addrinfo hints, *res = NULL; int max; - char *a; p = strdup(s); if (!p) @@ -88,14 +87,11 @@ switch (prefix->a.ss_family) { case AF_INET: max = 32; - a = (char *)&((struct sockaddr_in *)&prefix->a)->sin_addr; break; case AF_INET6: max = 128; - a = (char *)&((struct sockaddr_in6 *)&prefix->a)->sin6_addr; break; default: - a = NULL; max = -1; break; } @@ -130,10 +126,10 @@ static char buf[NI_MAXHOST + 20]; char hbuf[NI_MAXHOST]; - if (getnameinfo((const struct sockaddr *)&prefix->a, prefix->a.ss_len, - hbuf, sizeof(hbuf), NULL, 0, niflags)) + if (getnameinfo((const void *)&prefix->a, (socklen_t)prefix->a.ss_len, + hbuf, (socklen_t)sizeof(hbuf), NULL, 0, niflags)) return NULL; - snprintf(buf, sizeof(buf), "%s/%d", hbuf, prefix->l); + (void)snprintf(buf, sizeof(buf), "%s/%d", hbuf, prefix->l); return buf; } @@ -173,8 +169,8 @@ if (off + l > a.ss_len) return 0; - pa = ((char *)&a) + off; - pb = ((char *)&b) + off; + pa = ((char *)(void *)&a) + off; + pb = ((char *)(void *)&b) + off; if (prefix->l % 8) { pa[prefix->l / 8] &= 0xff00 >> (prefix->l % 8); pb[prefix->l / 8] &= 0xff00 >> (prefix->l % 8); @@ -200,7 +196,7 @@ if (strlen(line) + 1 > sizeof(buf)) return NULL; - strlcpy(buf, line, sizeof(buf)); + (void)strlcpy(buf, line, sizeof(buf)); p = strchr(buf, '\n'); if (!p) @@ -280,7 +276,7 @@ p = &sentinel; sentinel.next = NULL; - while (fgets(buf, sizeof(buf), fp) != NULL) { + while (fgets(buf, (int)sizeof(buf), fp) != NULL) { conf = config_load1(buf); if (conf) { p->next = conf; @@ -289,7 +285,7 @@ } config_list = sentinel.next; - fclose(fp); + (void)fclose(fp); return 0; }