Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mDNStools & openbsd




Hello

i've test last tools on openbsd 4.0-stable/i386 with 107.6 and here,
some remarks

* compiling error
$ gmake os=openbsdmDNSPosix.c: In function
`SocketDataReady':mDNSPosix.c:517: error: structure has no member named
`NotAnInteger'mDNSPosix.c: In function
`ParseDNSServers':mDNSPosix.c:664: warning: Array size (10) smaller than
format string size (11) (arg 3)gmake: *** [objects/prod/mDNSPosix.c.o]
Error 1

=> flag HAVE_BROKEN_RECVDSTADDR is no more necessary

* lots of warning related to sprintf/strcpy & co
here patch, following the comments of
http://www.openbsd.org/cgi-bin/man.cgi?query=strcpy&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html


please test/comments

thanks
Regards

		Julien

--- mDNSShared/uds_daemon.c.orig	Sat Jan 13 16:44:17 2007
+++ mDNSShared/uds_daemon.c	Sat Jan 13 16:46:01 2007
@@ -1014,7 +1014,8 @@
 	// determine whether sa_len is defined on a particular platform.
     	laddr.sun_len = sizeof(struct sockaddr_un);
 	#endif
-    	strcpy(laddr.sun_path, MDNS_UDS_SERVERPATH);
+    	strncpy(laddr.sun_path, MDNS_UDS_SERVERPATH, sizeof(laddr.sun_path) - 1);
+	laddr.sun_path[sizeof(laddr.sun_path) - 1] = '\0';
 		ret = bind(listenfd, (struct sockaddr *) &laddr, sizeof(laddr));
 		umask(mask);
 		if (ret < 0)
diff -urN mDNSPosix.orig/Identify.c mDNSPosix/Identify.c
--- mDNSPosix.orig/Identify.c	Sat Jan 13 16:11:50 2007
+++ mDNSPosix/Identify.c	Sat Jan 13 16:21:05 2007
@@ -444,8 +444,10 @@
 			if (StopNow == 2) break;
 			}
 #endif
-		else
-			strcpy(hostname, arg);
+		else {
+			strncpy(hostname, arg, sizeof(hostname) - 1);
+			hostname[sizeof(hostname) - 1] = '\0';
+		}
 	
 		// Now we have the host name; get its A, AAAA, and HINFO
 		if (hostname[0]) DoQuery(&q, hostname, kDNSQType_ANY, &target, InfoCallback);
diff -urN mDNSPosix.orig/Makefile mDNSPosix/Makefile
--- mDNSPosix.orig/Makefile	Sat Jan 13 16:11:50 2007
+++ mDNSPosix/Makefile	Sat Jan 13 16:14:34 2007
@@ -341,7 +341,7 @@
 else
 
 ifeq ($(os),openbsd)
-CFLAGS_OS = -DHAVE_BROKEN_RECVDSTADDR
+CFLAGS_OS = 
 LDCONFIG = ldconfig
 else
 
diff -urN mDNSPosix.orig/ProxyResponder.c mDNSPosix/ProxyResponder.c
--- mDNSPosix.orig/ProxyResponder.c	Sat Jan 13 16:11:50 2007
+++ mDNSPosix/ProxyResponder.c	Sat Jan 13 16:22:02 2007
@@ -242,7 +242,8 @@
 		int len = strlen(argv[0]);
 		printf("STR: %s\n", argv[0]);
 		bptr[0] = len;
-		strcpy((char*)(bptr+1), argv[0]);
+		strncpy((char*)(bptr+1), argv[0], sizeof((char*)(bptr+1)) - 1);
+		(char*)(bptr+1)[sizeof((char*)(bptr+1)) - 1] = '\0';
 		bptr += 1 + len;
 		argc--;
 		argv++;
diff -urN mDNSPosix.orig/mDNSPosix.c mDNSPosix/mDNSPosix.c
--- mDNSPosix.orig/mDNSPosix.c	Sat Jan 13 16:11:50 2007
+++ mDNSPosix/mDNSPosix.c	Sat Jan 13 16:29:24 2007
@@ -1467,7 +1467,8 @@
 // On the Posix platform this maps directly to the ANSI C strcpy.
 mDNSexport void    mDNSPlatformStrCopy(const void *src,       void *dst)
 	{
-	strcpy((char *)dst, (char *)src);
+	strncpy((char *)dst, (char *)src, sizeof((char *)dst) - 1);
+	((char *)dst)[sizeof((char *)dst) - 1] = '\0';
 	}
 
 // mDNS core calls this routine to get the length of a C string.
diff -urN mDNSPosix.orig/mDNSUNP.c mDNSPosix/mDNSUNP.c
--- mDNSPosix.orig/mDNSUNP.c	Sat Jan 13 16:11:50 2007
+++ mDNSPosix/mDNSUNP.c	Sat Jan 13 16:26:31 2007
@@ -188,7 +188,7 @@
 		if(plen>bits_in_block) ones_in_block=bits_in_block;
 		else                   ones_in_block=plen;
 		block = ones & (ones << (bits_in_block-ones_in_block));
-		i==0 ? sprintf(addr, "%x", block) : sprintf(addr, "%s:%x", addr, block);
+		i==0 ? snprintf(addr, sizeof(addr), "%x", block) : snprintf(addr, sizeof(addr), "%s:%x", addr, block);
 		plen -= ones_in_block;
 		}
 	}
@@ -234,7 +234,7 @@
 			*ifipnext = ifi;            /* prev points to this new one */
 			ifipnext = &ifi->ifi_next;  /* pointer to next one goes here */
 
-			sprintf(addr6, "%s:%s:%s:%s:%s:%s:%s:%s",
+			snprintf(addr6, sizeof(addr6), "%s:%s:%s:%s:%s:%s:%s:%s",
 					addr[0],addr[1],addr[2],addr[3],
 					addr[4],addr[5],addr[6],addr[7]);
 
diff -urN mDNSPosix.orig/nss_mdns.c mDNSPosix/nss_mdns.c
--- mDNSPosix.orig/nss_mdns.c	Sat Jan 13 16:11:50 2007
+++ mDNSPosix/nss_mdns.c	Sat Jan 13 16:25:45 2007
@@ -1445,7 +1445,8 @@
 	}
 	
 	result->hostent->h_name =
-		strcpy (result->header->hostname, fullname);
+		strncpy (result->header->hostname, fullname, sizeof(result->header->hostname) - 1);
+	result->header->hostname[sizeof(result->header->hostname) - 1] = '\0';
 	
 	return result->header->hostname;
 }
@@ -2384,9 +2385,9 @@
 	while (i > 0)
 	{
 		i--;
-		curr += sprintf (curr, "%d.", in_addr_a [i]);
+		curr += snprintf (curr, sizeof(curr), "%d.", in_addr_a [i]);
 	}
-	sprintf (curr, "in-addr.arpa");
+	snprintf (curr, sizeof(curr), "in-addr.arpa");
 	
 	return buf;
 }
@@ -2415,7 +2416,7 @@
 	// Special handling for first
 	if (i % 2)
 	{
-		curr += sprintf (curr, "%d.", (in_addr_a [i/2] >> 4) & 0x0F);
+		curr += snprintf (curr, sizeof(curr), "%d.", (in_addr_a [i/2] >> 4) & 0x0F);
 	}
 	i >>= 1;
 		// Convert i to bytes (divide by 2)
@@ -2426,9 +2427,9 @@
 		
 		i--;
 		val = in_addr_a [i];
-		curr += sprintf (curr, "%x.%x.", val & 0x0F, (val >> 4) & 0x0F);
+		curr += snprintf (curr, sizeof(curr), "%x.%x.", val & 0x0F, (val >> 4) & 0x0F);
 	}
-	sprintf (curr, "ip6.arpa");
+	snprintf (curr, sizeof(curr), "ip6.arpa");
 	
 	return buf;
 }
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Bonjour-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/bonjour-dev/email@hidden

This email sent to email@hidden



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.