[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