[BusyBox-cvs] busybox/networking inetd.c,1.12,1.13

Glenn McGrath bug1 at busybox.net
Sun Jan 18 08:58:08 UTC 2004


Update of /var/cvs/busybox/networking
In directory nail:/tmp/cvs-serv8685/networking

Modified Files:
	inetd.c 
Log Message:
Fix up a couple of bugs i introduced in yesterdays cleanup.


Index: inetd.c
===================================================================
RCS file: /var/cvs/busybox/networking/inetd.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- inetd.c	17 Jan 2004 05:03:31 -0000	1.12
+++ inetd.c	18 Jan 2004 08:58:06 -0000	1.13
@@ -290,8 +290,9 @@
 	char *cp = *cpp;
 	char *start;
 
-	if (*cpp == NULL)
-		return ((char *)0);
+	if ((cpp == NULL) || (*cpp == NULL) || (**cpp == 0)) {
+		return (NULL);
+	}
 
 again:
 	while (*cp == ' ' || *cp == '\t')
@@ -332,17 +333,23 @@
 	static struct servtab serv;
 	struct servtab *sep = &serv;
 	int argc;
-	char *cp, *arg;
-
+	char *cp = NULL;
+	char *arg;
 more:
-	while ((cp = bb_get_chomped_line_from_file(fconfig)) && *cp == '#');
-	if (cp == NULL)
-		return ((struct servtab *)0);
+	do {
+		if (feof(fconfig)) {
+			return ((struct servtab *)0);
+		}
+		free(cp);
+		cp = bb_get_chomped_line_from_file(fconfig);
+	} while ((cp == NULL) || (*cp == '#'));
+
 	memset((char *)sep, 0, sizeof *sep);
 	sep->se_service = newstr(skip(&cp));
 	arg = skip(&cp);
-	if (arg == NULL)
+	if (arg == NULL) {
 		goto more;
+	}
 
 	if (strcmp(arg, "stream") == 0)
 		sep->se_socktype = SOCK_STREAM;
@@ -369,8 +376,9 @@
 		}
 	}
 	arg = skip(&cp);
-	if (arg == NULL)
+	if (arg == NULL) {
 		goto more;
+	}
 	{
 		char    *s = strchr(arg, '.');
 		if (s) {
@@ -390,10 +398,12 @@
 #ifdef INETD_FEATURE_ENABLED
 		const struct biltin *bi;
 
-		for (bi = biltins; bi->bi_service; bi++)
-			if (bi->bi_socktype == sep->se_socktype &&
-			    strcmp(bi->bi_service, sep->se_service) == 0)
+		for (bi = biltins; bi->bi_service; bi++) {
+			if ((bi->bi_socktype == sep->se_socktype) &&
+			    (strcmp(bi->bi_service, sep->se_service) == 0)) {
 				break;
+			}
+		}
 		if (bi->bi_service == 0) {
 			syslog(LOG_ERR, "internal service %s unknown",
 				sep->se_service);
@@ -406,18 +416,22 @@
 				sep->se_service);
 			goto more;
 #endif
-	} else
+	}
 #ifdef INETD_FEATURE_ENABLED
-	sep->se_bi = NULL
+	else {
+		sep->se_bi = NULL;
+	}
 #endif
-		;
 	argc = 0;
-	for (arg = skip(&cp); cp; arg = skip(&cp)) {
-		if (argc < MAXARGV)
+	for (arg = skip(&cp); cp && arg; arg = skip(&cp)) {
+		if (argc < MAXARGV) {
 			sep->se_argv[argc++] = newstr(arg);
+		}
 	}
-	while (argc <= MAXARGV)
+	while (argc <= MAXARGV) {
 		sep->se_argv[argc++] = NULL;
+	}
+
 	return (sep);
 }
 




More information about the busybox-cvs mailing list