Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Mar 2001 15:13:46 +0100 (CET)
From:      Harti Brandt <brandt@fokus.gmd.de>
To:        <alfred@freebsd.org>
Cc:        <freebsd-current@freebsd.org>
Subject:   RPC update break ypbind
Message-ID:  <Pine.BSF.4.33.0103201506430.450-100000@beagle.fokus.gmd.de>

next in thread | raw e-mail | index | archive | help

Hi,

the recent update to RPC causes ypbind to break. The problem is, that
/usr/src/usr.sbin/ypbind/yp_ping.c mirrors some code from the RPC library,
including the internal structure used for the CLIENT structure. The new
structure uses struct sockaddr_storage (128 bytes) instead of struct
sockaddr_in (something lesser) and includes a new member just at the end
of the structure (struct pollfd). Because the XDR buffers are allocate
directly behind struct CLIENT, this makes the pointers into the buffer
wrong. This causes the ypbind child to dump core, which in turn causes
the parent to create a new child, which dumps core, causing the parent
to create a new child, which dumps core ...


A simple fix is:

Index: yp_ping.c
===================================================================
RCS file: /usr/ncvs/src/usr.sbin/ypbind/yp_ping.c,v
retrieving revision 1.8
diff -u -r1.8 yp_ping.c
--- yp_ping.c	2001/03/19 12:50:12	1.8
+++ yp_ping.c	2001/03/20 13:46:24
@@ -93,6 +93,7 @@
 #include <rpcsvc/yp.h>
 #include <sys/socket.h>
 #include <sys/ioctl.h>
+#include <sys/poll.h>
 #include <net/if.h>
 #include "yp_ping.h"

@@ -126,7 +127,7 @@
 struct cu_data {
 	int		   cu_sock;
 	bool_t		   cu_closeit;
-	struct sockaddr_in cu_raddr;
+	struct sockaddr_storage cu_raddr;
 	int		   cu_rlen;
 	struct timeval	   cu_wait;
 	struct timeval     cu_total;
@@ -136,6 +137,7 @@
 	u_int		   cu_sendsz;
 	char		   *cu_outbuf;
 	u_int		   cu_recvsz;
+	struct pollfd	cu_pollfd;
 	char		   cu_inbuf[1];
 };

A better fix would probably put the definition into a private header
file and include this in yp_ping.

harti
-- 
harti brandt, http://www.fokus.gmd.de/research/cc/cats/employees/hartmut.brandt/private
              brandt@fokus.gmd.de, harti@begemot.org


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.33.0103201506430.450-100000>