From owner-svn-src-all@FreeBSD.ORG Sun Apr 5 17:12:14 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 163011065670; Sun, 5 Apr 2009 17:12:14 +0000 (UTC) (envelope-from phk@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 04FD98FC0C; Sun, 5 Apr 2009 17:12:14 +0000 (UTC) (envelope-from phk@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n35HCDHb025928; Sun, 5 Apr 2009 17:12:13 GMT (envelope-from phk@svn.freebsd.org) Received: (from phk@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n35HCD44025927; Sun, 5 Apr 2009 17:12:13 GMT (envelope-from phk@svn.freebsd.org) Message-Id: <200904051712.n35HCD44025927@svn.freebsd.org> From: Poul-Henning Kamp Date: Sun, 5 Apr 2009 17:12:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r190717 - head/sbin/routed X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 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: Sun, 05 Apr 2009 17:12:14 -0000 Author: phk Date: Sun Apr 5 17:12:13 2009 New Revision: 190717 URL: http://svn.freebsd.org/changeset/base/190717 Log: Fix casts which are not by definition safe, but which malloc(3) makes safe for us. Modified: head/sbin/routed/if.c Modified: head/sbin/routed/if.c ============================================================================== --- head/sbin/routed/if.c Sun Apr 5 16:01:56 2009 (r190716) +++ head/sbin/routed/if.c Sun Apr 5 17:12:13 2009 (r190717) @@ -640,7 +640,7 @@ rt_xaddrs(struct rt_addrinfo *info, void ifinit(void) { - static char *sysctl_buf; + static struct ifa_msghdr *sysctl_buf; static size_t sysctl_buf_size = 0; uint complaints = 0; static u_int prev_complaints = 0; @@ -659,7 +659,8 @@ ifinit(void) size_t needed; int mib[6]; struct if_msghdr *ifm; - struct ifa_msghdr *ifam, *ifam_lim, *ifam2; + void *ifam_lim; + struct ifa_msghdr *ifam, *ifam2; int in, ierr, out, oerr; struct intnet *intnetp; struct rt_addrinfo info; @@ -702,10 +703,9 @@ ifinit(void) "ifinit sysctl"); } - ifam_lim = (struct ifa_msghdr *)(sysctl_buf + needed); - for (ifam = (struct ifa_msghdr *)sysctl_buf; - ifam < ifam_lim; - ifam = ifam2) { + /* XXX: thanks to malloc(3), alignment can be presumed OK */ + ifam_lim = (char *)sysctl_buf + needed; + for (ifam = sysctl_buf; (void *)ifam < ifam_lim; ifam = ifam2) { ifam2 = (struct ifa_msghdr*)((char*)ifam + ifam->ifam_msglen);