svn commit: r343161 - in head: include/protocols libexec/talkd usr.bin/talk

Brooks Davis brooks at FreeBSD.org
Fri Jan 18 21:30:08 UTC 2019


Author: brooks
Date: Fri Jan 18 21:30:06 2019
New Revision: 343161
URL: https://svnweb.freebsd.org/changeset/base/343161

Log:
  Use a private definition of osockaddr rather then relying on type
  namespace polution in sys/socket.h.
  
  Also remove support for operation on 4.3BSD.
  
  PR:		224529
  Differential Revision:	https://reviews.freebsd.org/D14505

Modified:
  head/include/protocols/talkd.h
  head/libexec/talkd/talkd.c
  head/usr.bin/talk/invite.c
  head/usr.bin/talk/look_up.c

Modified: head/include/protocols/talkd.h
==============================================================================
--- head/include/protocols/talkd.h	Fri Jan 18 21:25:46 2019	(r343160)
+++ head/include/protocols/talkd.h	Fri Jan 18 21:30:06 2019	(r343161)
@@ -55,6 +55,15 @@
  */
 
 /*
+ * The talk protocol embeds a 4.3BSD sockaddr.  Define our own version
+ * rather then relying on namespace polution in kernel headers.
+ */
+struct tsockaddr {
+	unsigned short sa_family;
+	char	sa_data[14];
+};
+
+/*
  * Client->server request message format.
  */
 typedef struct {
@@ -63,8 +72,8 @@ typedef struct {
 	u_char	answer;		/* not used */
 	u_char	pad;
 	u_int32_t	id_num;		/* message id */
-	struct	osockaddr addr;		/* old (4.3) style */
-	struct	osockaddr ctl_addr;	/* old (4.3) style */
+	struct	tsockaddr addr;		/* old (4.3) style */
+	struct	tsockaddr ctl_addr;	/* old (4.3) style */
 	int32_t	pid;		/* caller's process id */
 #define	NAME_SIZE	12
 	char	l_name[NAME_SIZE];/* caller's name */
@@ -82,7 +91,7 @@ typedef struct {
 	u_char	answer;		/* respose to request message, see below */
 	u_char	pad;
 	u_int32_t	id_num;		/* message id */
-	struct	osockaddr addr;	/* address for establishing conversation */
+	struct	tsockaddr addr;	/* address for establishing conversation */
 } CTL_RESPONSE;
 
 #define	TALK_VERSION	1		/* protocol version */

Modified: head/libexec/talkd/talkd.c
==============================================================================
--- head/libexec/talkd/talkd.c	Fri Jan 18 21:25:46 2019	(r343160)
+++ head/libexec/talkd/talkd.c	Fri Jan 18 21:30:06 2019	(r343161)
@@ -114,7 +114,8 @@ main(int argc, char *argv[])
 			continue;
 		}
 		lastmsgtime = time(0);
-		(void)memcpy(&ctl_addr, &mp->ctl_addr, sizeof(ctl_addr));
+		(void)memcpy(&ctl_addr.sa_data, &mp->ctl_addr.sa_data,
+		    sizeof(ctl_addr.sa_data));
 		ctl_addr.sa_family = ntohs(mp->ctl_addr.sa_family);
 		ctl_addr.sa_len = sizeof(ctl_addr);
 		process_request(mp, &response);

Modified: head/usr.bin/talk/invite.c
==============================================================================
--- head/usr.bin/talk/invite.c	Fri Jan 18 21:25:46 2019	(r343160)
+++ head/usr.bin/talk/invite.c	Fri Jan 18 21:30:06 2019	(r343161)
@@ -77,13 +77,9 @@ invite_remote(void)
 	itimer.it_interval = itimer.it_value;
 	if (listen(sockt, 5) != 0)
 		p_error("Error on attempt to listen for caller");
-#ifdef MSG_EOR
 	/* copy new style sockaddr to old, swap family (short in old) */
-	msg.addr = *(struct osockaddr *)&my_addr;  /* XXX new to old  style*/
+	msg.addr = *(struct tsockaddr *)&my_addr;
 	msg.addr.sa_family = htons(my_addr.sin_family);
-#else
-	msg.addr = *(struct sockaddr *)&my_addr;
-#endif
 	msg.id_num = htonl(-1);		/* an impossible id_num */
 	invitation_waiting = 1;
 	announce_invite();

Modified: head/usr.bin/talk/look_up.c
==============================================================================
--- head/usr.bin/talk/look_up.c	Fri Jan 18 21:25:46 2019	(r343160)
+++ head/usr.bin/talk/look_up.c	Fri Jan 18 21:30:06 2019	(r343161)
@@ -59,13 +59,9 @@ check_local(void)
 	struct sockaddr addr;
 
 	/* the rest of msg was set up in get_names */
-#ifdef MSG_EOR
 	/* copy new style sockaddr to old, swap family (short in old) */
-	msg.ctl_addr = *(struct osockaddr *)&ctl_addr;
+	msg.ctl_addr = *(struct tsockaddr *)&ctl_addr;
 	msg.ctl_addr.sa_family = htons(ctl_addr.sin_family);
-#else
-	msg.ctl_addr = *(struct sockaddr *)&ctl_addr;
-#endif
 	/* must be initiating a talk */
 	if (!look_for_invite(rp))
 		return (0);


More information about the svn-src-head mailing list