From owner-svn-src-all@FreeBSD.ORG Wed Dec 4 05:06:57 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 06631BD6; Wed, 4 Dec 2013 05:06:57 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DAFB910DA; Wed, 4 Dec 2013 05:06:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rB456ugO058513; Wed, 4 Dec 2013 05:06:56 GMT (envelope-from eadler@svn.freebsd.org) Received: (from eadler@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id rB456u6r058512; Wed, 4 Dec 2013 05:06:56 GMT (envelope-from eadler@svn.freebsd.org) Message-Id: <201312040506.rB456u6r058512@svn.freebsd.org> From: Eitan Adler Date: Wed, 4 Dec 2013 05:06:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r258908 - head/sbin/route X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Dec 2013 05:06:57 -0000 Author: eadler Date: Wed Dec 4 05:06:56 2013 New Revision: 258908 URL: http://svnweb.freebsd.org/changeset/base/258908 Log: Avoid using a static buffer in atalk_ntoa. This will help allow users to call route(1) as a library. Submitted by: Sebastian Huber (older version) Discussed on: -hackers Reviwed by: adri (different older version) Modified: head/sbin/route/route.c Modified: head/sbin/route/route.c ============================================================================== --- head/sbin/route/route.c Wed Dec 4 04:29:52 2013 (r258907) +++ head/sbin/route/route.c Wed Dec 4 05:06:56 2013 (r258908) @@ -71,6 +71,8 @@ __FBSDID("$FreeBSD$"); #include #include +#define ATALK_BUF_SIZE 20 + static struct keytab { const char *kt_cp; int kt_i; @@ -92,7 +94,7 @@ static int defaultfib; static int numfibs; static int atalk_aton(const char *, struct at_addr *); -static char *atalk_ntoa(struct at_addr); +static char *atalk_ntoa(struct at_addr, char [ATALK_BUF_SIZE]); static void printb(int, const char *); static void flushroutes(int argc, char *argv[]); static int flushroutes_fib(int); @@ -495,6 +497,7 @@ routename(struct sockaddr *sa) { struct sockaddr_dl *sdl; const char *cp; + char atalk_buf[ATALK_BUF_SIZE]; static char line[NI_MAXHOST]; static char domain[MAXHOSTNAMELEN + 1]; static int first = 1; @@ -577,7 +580,8 @@ routename(struct sockaddr *sa) #endif case AF_APPLETALK: (void)snprintf(line, sizeof(line), "atalk %s", - atalk_ntoa(((struct sockaddr_at *)(void *)sa)->sat_addr)); + atalk_ntoa(((struct sockaddr_at *)(void *)sa)->sat_addr, + atalk_buf)); break; case AF_LINK: @@ -622,6 +626,7 @@ netname(struct sockaddr *sa) { struct sockaddr_dl *sdl; static char line[MAXHOSTNAMELEN + 1]; + char atalk_buf[ATALK_BUF_SIZE]; int n; #ifdef INET struct netent *np = NULL; @@ -685,7 +690,8 @@ netname(struct sockaddr *sa) case AF_APPLETALK: (void)snprintf(line, sizeof(line), "atalk %s", - atalk_ntoa(((struct sockaddr_at *)(void *)sa)->sat_addr)); + atalk_ntoa(((struct sockaddr_at *)(void *)sa)->sat_addr, + atalk_buf)); break; case AF_LINK: @@ -1858,6 +1864,7 @@ keyword(const char *cp) static void sodump(struct sockaddr *sa, const char *which) { + char atalk_buf[ATALK_BUF_SIZE]; #ifdef INET6 char nbuf[INET6_ADDRSTRLEN]; #endif @@ -1882,7 +1889,8 @@ sodump(struct sockaddr *sa, const char * #endif case AF_APPLETALK: (void)printf("%s: atalk %s; ", which, - atalk_ntoa(((struct sockaddr_at *)(void *)sa)->sat_addr)); + atalk_ntoa(((struct sockaddr_at *)(void *)sa)->sat_addr, + atalk_buf)); break; } (void)fflush(stdout); @@ -1952,11 +1960,9 @@ atalk_aton(const char *text, struct at_a } static char * -atalk_ntoa(struct at_addr at) +atalk_ntoa(struct at_addr at, char buf[ATALK_BUF_SIZE]) { - static char buf[20]; - - (void)snprintf(buf, sizeof(buf), "%u.%u", ntohs(at.s_net), at.s_node); - buf[sizeof(buf) - 1] = '\0'; + (void)snprintf(buf, ATALK_BUF_SIZE, "%u.%u", ntohs(at.s_net), at.s_node); + buf[ATALK_BUF_SIZE - 1] = '\0'; return(buf); }