* svc_udp.c (svcudp_recv): Avoid coredumps under Solaris (and
authorTom Yu <tlyu@mit.edu>
Mon, 10 Feb 1997 05:05:54 +0000 (05:05 +0000)
committerTom Yu <tlyu@mit.edu>
Mon, 10 Feb 1997 05:05:54 +0000 (05:05 +0000)
possibly other systems) by passing in a non-NULL iovec to
recvmsg().

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@9834 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/rpc/ChangeLog
src/lib/rpc/svc_udp.c

index 3d2245de6b9af3648175e9fd1b209b839378daeb..6aea5fe9adbf0aea006567fc9fa6d30a1a2072e4 100644 (file)
@@ -1,3 +1,9 @@
+Mon Feb 10 00:04:36 1997  Tom Yu  <tlyu@mit.edu>
+
+       * svc_udp.c (svcudp_recv): Avoid coredumps under Solaris (and
+       possibly other systems) by passing in a non-NULL iovec to
+       recvmsg().
+
 Thu Jan 16 19:02:22 1997  Tom Yu  <tlyu@mit.edu>
 
        * Makefile.in (all-prerecurse): Update to use double-colon rules.
index 142293facd3fe9562a69a6ac4cc798842748bbf6..55b591092cacf01135a10ff840688eafeb0caab6 100644 (file)
@@ -175,6 +175,7 @@ svcudp_recv(xprt, msg)
        struct rpc_msg *msg;
 {
         struct msghdr dummy;
+       struct iovec dummy_iov[1];
        register struct svcudp_data *su = su_data(xprt);
        register XDR *xdrs = &(su->su_xdrs);
        register int rlen;
@@ -183,6 +184,10 @@ svcudp_recv(xprt, msg)
 
     again:
        memset((char *) &dummy, 0, sizeof(dummy));
+       dummy_iov[0].iov_base = rpc_buffer(xprt);
+       dummy_iov[0].iov_len = (int) su->su_iosz;
+       dummy.msg_iov = dummy_iov;
+       dummy.msg_iovlen = 1;
        dummy.msg_namelen = xprt->xp_laddrlen = sizeof(struct sockaddr_in);
        dummy.msg_name = (char *) &xprt->xp_laddr;
        rlen = recvmsg(xprt->xp_sock, &dummy, MSG_PEEK);