Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Aug 2001 02:21:44 -0700
From:      Kris Kennaway <kris@obsecurity.org>
To:        Kris Kennaway <kris@obsecurity.org>
Cc:        freebsd-bugs@FreeBSD.org
Subject:   Re: misc/29867: 4.3 timed master can't sync Red Hat Linux 6.0 box
Message-ID:  <20010819022144.A74424@xor.obsecurity.org>
In-Reply-To: <200108190920.f7J9K1E43753@freefall.freebsd.org>; from kris@obsecurity.org on Sun, Aug 19, 2001 at 02:20:01AM -0700
References:  <200108190920.f7J9K1E43753@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
GNATS screwed up the MIME.  Here's the patch again, hopefully unmunged
this time.

Kris

Index: timed/readmsg.c
===================================================================
RCS file: /mnt/ncvs/src/usr.sbin/timed/timed/readmsg.c,v
retrieving revision 1.7
diff -u -r1.7 readmsg.c
--- timed/readmsg.c	2001/01/01 18:43:21	1.7
+++ timed/readmsg.c	2001/08/19 09:14:07
@@ -212,10 +212,15 @@
 			syslog(LOG_ERR, "recvfrom: %m");
 			exit(1);
 		}
-		if (n < (ssize_t)sizeof(struct tsp)) {
+		/*
+		 * The 4.3BSD protocol spec had a 32-byte tsp_name field, and
+		 * this is still OS-dependent.  Demand that the packet is at
+		 * least long enough to hold a 4.3BSD packet.
+		 */
+		if (n < (ssize_t)(sizeof(struct tsp) - MAXHOSTNAMELEN + 32)) {
 			syslog(LOG_NOTICE,
 			    "short packet (%u/%u bytes) from %s",
-			      n, sizeof(struct tsp),
+			      n, sizeof(struct tsp) - MAXHOSTNAMELEN + 32,
 			      inet_ntoa(from.sin_addr));
 			continue;
 		}
Index: timedc/cmds.c
===================================================================
RCS file: /mnt/ncvs/src/usr.sbin/timed/timedc/cmds.c,v
retrieving revision 1.7
diff -u -r1.7 cmds.c
--- timedc/cmds.c	2001/05/09 08:37:18	1.7
+++ timedc/cmds.c	2001/08/19 09:17:16
@@ -332,10 +332,15 @@
 				warn("recvfrom");
 				continue;
 			}
-			if (cc < sizeof(struct tsp)) {
+			/*
+			 * The 4.3BSD protocol spec had a 32-byte tsp_name field, and
+			 * this is still OS-dependent.  Demand that the packet is at
+			 * least long enough to hold a 4.3BSD packet.
+			 */
+			if (cc < (sizeof(struct tsp) - MAXHOSTNAMELEN + 32)) {
 				fprintf(stderr, 
 				   "short packet (%u/%u bytes) from %s\n",
-				   cc, sizeof(struct tsp),
+				   cc, sizeof(struct tsp) - MAXHOSTNAMELEN + 32,
 				   inet_ntoa(from.sin_addr));
 				continue;
 			}
@@ -484,9 +489,15 @@
 			warn("recvfrom");
 			return;
 		}
-		if (cc < sizeof(struct tsp)) {
-			fprintf(stderr, "short pack (%u/%u bytes) from %s\n",
-			   cc, sizeof(struct tsp), inet_ntoa(from.sin_addr));
+		/*
+		 * The 4.3BSD protocol spec had a 32-byte tsp_name field, and
+		 * this is still OS-dependent.  Demand that the packet is at
+		 * least long enough to hold a 4.3BSD packet.
+		 */
+		if (cc < (sizeof(struct tsp) - MAXHOSTNAMELEN + 32)) {
+			fprintf(stderr, "short packet (%u/%u bytes) from %s\n",
+			    cc, sizeof(struct tsp) - MAXHOSTNAMELEN + 32,
+			    inet_ntoa(from.sin_addr));
 			return;
 		}
 		bytehostorder(&msg);


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010819022144.A74424>