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 brandt, http://www.fokus.gmd.de/research/cc/cats/employees/hartmut.brandt/private

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to