svn commit: r206153 - head/lib/libc/net

Hajimu UMEMOTO ume at FreeBSD.org
Sun Apr 4 07:21:46 UTC 2010


Author: ume
Date: Sun Apr  4 07:21:45 2010
New Revision: 206153
URL: http://svn.freebsd.org/changeset/base/206153

Log:
  Treat '+' as special only when in compat mode, and simplify
  the logic bit.
  
  MFC after:	2 weeks

Modified:
  head/lib/libc/net/getservent.c

Modified: head/lib/libc/net/getservent.c
==============================================================================
--- head/lib/libc/net/getservent.c	Sun Apr  4 07:02:10 2010	(r206152)
+++ head/lib/libc/net/getservent.c	Sun Apr  4 07:21:45 2010	(r206153)
@@ -315,28 +315,8 @@ files_servent(void *retval, void *mdata,
 				break;
 			}
 
-			if (*line=='+') {
-				if (serv_mdata->compat_mode != 0)
-					st->compat_mode_active = 1;
-			} else {
-				if (bufsize <= linesize + _ALIGNBYTES +
-				    sizeof(char *)) {
-					*errnop = ERANGE;
-					rv = NS_RETURN;
-					break;
-				}
-				aliases = (char **)_ALIGN(&buffer[linesize+1]);
-				aliases_size = (buffer + bufsize -
-				    (char *)aliases) / sizeof(char *);
-				if (aliases_size < 1) {
-					*errnop = ERANGE;
-					rv = NS_RETURN;
-					break;
-				}
-
-				memcpy(buffer, line, linesize);
-				buffer[linesize] = '\0';
-			}
+			if (*line=='+' && serv_mdata->compat_mode != 0)
+				st->compat_mode_active = 1;
 		}
 
 		if (st->compat_mode_active != 0) {
@@ -367,6 +347,23 @@ files_servent(void *retval, void *mdata,
 			continue;
 		}
 
+		if (bufsize <= linesize + _ALIGNBYTES + sizeof(char *)) {
+			*errnop = ERANGE;
+			rv = NS_RETURN;
+			break;
+		}
+		aliases = (char **)_ALIGN(&buffer[linesize + 1]);
+		aliases_size = (buffer + bufsize -
+		    (char *)aliases) / sizeof(char *);
+		if (aliases_size < 1) {
+			*errnop = ERANGE;
+			rv = NS_RETURN;
+			break;
+		}
+
+		memcpy(buffer, line, linesize);
+		buffer[linesize] = '\0';
+
 		rv = servent_unpack(buffer, serv, aliases, aliases_size,
 		    errnop);
 		if (rv !=0 ) {


More information about the svn-src-all mailing list