Date: Thu, 6 Oct 2011 19:59:14 +0000 (UTC) From: Jung-uk Kim <jkim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r226068 - head/sys/compat/linux Message-ID: <201110061959.p96JxE7j075377@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jkim Date: Thu Oct 6 19:59:14 2011 New Revision: 226068 URL: http://svn.freebsd.org/changeset/base/226068 Log: Unroll inlined strnlen(9) and make it easier to read. No functional change. Modified: head/sys/compat/linux/linux_socket.c Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Thu Oct 6 19:15:51 2011 (r226067) +++ head/sys/compat/linux/linux_socket.c Thu Oct 6 19:59:14 2011 (r226068) @@ -99,12 +99,11 @@ do_sa_get(struct sockaddr **sap, const s int error=0, bdom; struct sockaddr *sa; struct osockaddr *kosa; - int alloclen; #ifdef INET6 int oldv6size; struct sockaddr_in6 *sin6; #endif - int namelen; + int alloclen, hdrlen, namelen; if (*osalen < 2 || *osalen > UCHAR_MAX || !osa) return (EINVAL); @@ -167,14 +166,11 @@ do_sa_get(struct sockaddr **sap, const s } } - if ((bdom == AF_LOCAL) && (*osalen > sizeof(struct sockaddr_un))) { - for (namelen = 0; - namelen < *osalen - offsetof(struct sockaddr_un, sun_path); - namelen++) - if (!((struct sockaddr_un *)kosa)->sun_path[namelen]) - break; - if (namelen + offsetof(struct sockaddr_un, sun_path) > - sizeof(struct sockaddr_un)) { + if (bdom == AF_LOCAL && *osalen > sizeof(struct sockaddr_un)) { + hdrlen = offsetof(struct sockaddr_un, sun_path); + namelen = strnlen(((struct sockaddr_un *)kosa)->sun_path, + *osalen - hdrlen); + if (hdrlen + namelen > sizeof(struct sockaddr_un)) { error = EINVAL; goto out; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201110061959.p96JxE7j075377>