Skip site navigation (1)Skip section navigation (2)
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>