[BusyBox-cvs] busybox/networking httpd.c, 1.15, 1.16 ipcalc.c, 1.6, 1.7

Glenn McGrath bug1 at busybox.net
Fri Sep 12 00:44:53 UTC 2003


Update of /var/cvs/busybox/networking
In directory winder:/tmp/cvs-serv13161/networking

Modified Files:
	httpd.c ipcalc.c 
Log Message:
Busybox CVS version ipcalc have problems:
- Can`t use 255.255.255.255 address
- typo: double check for valid ip address and uncheck for valid mask

httpd unseted SERVER_PORT (my bug from last_patch111).

last_patch_112 from Vladimir N. Oleynik


Index: ipcalc.c
===================================================================
RCS file: /var/cvs/busybox/networking/ipcalc.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- ipcalc.c	5 Sep 2003 02:37:15 -0000	1.6
+++ ipcalc.c	12 Sep 2003 00:44:50 -0000	1.7
@@ -43,15 +43,14 @@
 #ifdef CONFIG_FEATURE_IPCALC_FANCY
 static int get_prefix(unsigned long netmask)
 {
-        unsigned long t;
+	unsigned long msk = 0x80000000;
         int ret = 0;
 
-        for (t = 0; t < 32; t++) {
-                if (htonl(netmask) & (0x80000000 >> t)) {
-                        ret ++;
-                } else {
-                        break;
-                }
+	netmask = htonl(netmask);
+	while(msk) {
+		if (netmask & msk)
+			ret++;
+		msk >>= 1;
         }
         return ret;
 }
@@ -64,14 +63,16 @@
 #define HOSTNAME  0x10
 #define SILENT    0x20
 
+
 int ipcalc_main(int argc, char **argv)
 {
 	unsigned long mode;
 
-	unsigned long netmask = 0;
+	unsigned long netmask;
 	unsigned long broadcast;
 	unsigned long network;
 	unsigned long ipaddr;
+	struct in_addr a;
 
 #ifdef CONFIG_FEATURE_IPCALC_FANCY
 	unsigned long netprefix = 0;
@@ -116,20 +117,21 @@
                         *prefixstr = (char)0;
                         prefixstr++;
                         if (*prefixstr) {
+				unsigned int msk;
+
                                 netprefix = atol(prefixstr);
                                 if (netprefix > 32) {
                                         IPCALC_MSG(bb_error_msg_and_die("bad IP prefix: %s\n", prefixstr),
                                                 exit(EXIT_FAILURE));
                                 }
-                                if (netprefix) {
-                                        netmask = 0x80000000;
-                                        netprefix--;
-                                        while(netprefix) {
-                                                netmask = 0x80000000 | (netmask >> 1);
+				netmask = 0;
+				msk = 0x80000000;
+				while (netprefix > 0) {
+					netmask |= msk;
+					msk >>= 1;
                                                 netprefix--;
                                         }
                                         netmask = htonl(netmask);
-                                }
                                 /* Even if it was 0, we will signify that we have a netmask. This allows */
                                 /* for specification of default routes, etc which have a 0 netmask/prefix */
                                 have_netmask = 1;
@@ -138,34 +140,37 @@
                 }
                 prefixstr++;
         }
-	ipaddr = inet_addr(ipstr);
+	ipaddr = inet_aton(ipstr, &a);
 #else
-	ipaddr = inet_addr(argv[optind]);
+	ipaddr = inet_aton(argv[optind], &a);
 #endif
 
-	if (ipaddr == INADDR_NONE) {
+	if (ipaddr == 0) {
 		IPCALC_MSG(bb_error_msg_and_die("bad IP address: %s", argv[optind]),
 				   exit(EXIT_FAILURE));
 	}
+	ipaddr = a.s_addr;
 
 	if (argc - optind == 2) {
 #ifdef CONFIG_FEATURE_IPCALC_FANCY
-               if (have_netmask == 1) {
+	       if (have_netmask) {
                         IPCALC_MSG(bb_error_msg_and_die("Both prefix and netmask were specified, use one or the other.\n"),
                                 exit(EXIT_FAILURE));
                 }
-                have_netmask = 1;
-#endif
-                netmask = inet_addr(argv[optind + 1]);
-	}
 
-	if (ipaddr == INADDR_NONE) {
+#endif
+		netmask = inet_aton(argv[optind + 1], &a);
+		if (netmask == 0) {
 		IPCALC_MSG(bb_error_msg_and_die("bad netmask: %s", argv[optind + 1]),
 				   exit(EXIT_FAILURE));
 	}
+		netmask = a.s_addr;
+	} else {
+#ifdef CONFIG_FEATURE_IPCALC_FANCY
 
+		if (!have_netmask)
+#endif
 	/* JHC - If the netmask wasn't provided then calculate it */
-	if (!netmask) {
 		netmask = get_netmask(ipaddr);
 	}
 

Index: httpd.c
===================================================================
RCS file: /var/cvs/busybox/networking/httpd.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- httpd.c	10 Sep 2003 23:35:44 -0000	1.15
+++ httpd.c	12 Sep 2003 00:44:50 -0000	1.16
@@ -1990,9 +1990,6 @@
   if(uid > 0)
 	setuid(uid);
 # endif
-# ifdef CONFIG_FEATURE_HTTPD_CGI
-  addEnvPort("SERVER");
-# endif
 #endif
 
 #ifdef CONFIG_FEATURE_HTTPD_CGI
@@ -2005,6 +2002,9 @@
 	if(p) {
 		setenv("PATH", p, 0);
 	}
+# ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
+	addEnvPort("SERVER");
+# endif
    }
 #endif
 




More information about the busybox-cvs mailing list