svn commit: r226068 - head/sys/compat/linux
Jung-uk Kim
jkim at FreeBSD.org
Thu Oct 6 19:59:15 UTC 2011
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;
}
More information about the svn-src-head
mailing list