Subject: lib/15802: libc encodes/decodes wrong rpc packet of RPCBPROC_GETSTAT.
To: None <gnats-bugs@gnats.netbsd.org>
From: None <mrt@notwork.org>
List: netbsd-bugs
Date: 03/03/2002 23:52:39
>Number:         15802
>Category:       lib
>Synopsis:       libc encodes/decodes wrong rpc packet of RPCBPROC_GETSTAT.
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    lib-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Mar 03 23:53:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Murata, Shuuichirou
>Release:        NetBSD 1.5ZA
>Organization:
ASTEC, Inc.
>Environment:
NetBSD tanaquil 1.5ZA NetBSD 1.5ZA (TANAQUIL) #73: Sat Mar  2 16:34:59 JST 2002
    mrt@tanaquil:/usr/src/sys/arch/i386/compile/TANAQUIL i386
>Description:
Currnet implementation of rpc library in libc encodes/decodes wrong rpc
packet of RPCBPROC_GETSTAT of rpcbind4.
RFC 1833 requires rpcbs_rmtcalllist_ptr as fifth element of struct
rpcb_stat, but NetBSD's doesn't have this.
Thus, NetBSD's "rpcinfo -m" cannot talk to Solaris's rpcbind  and vice
versa.

>How-To-Repeat:
On NetBSD, do "rpcinfo -m" to another implementation of rpcbind4 (such
as Solaris).

>Fix:
Apply following. (Sorry for tab <-> space conversion)

Index: rpcb_st_xdr.c
===================================================================
RCS file: /cvs/cvsroot/basesrc/lib/libc/rpc/rpcb_st_xdr.c,v
retrieving revision 1.5
diff -u -r1.5 rpcb_st_xdr.c
--- rpcb_st_xdr.c       2001/01/04 14:57:17     1.5
+++ rpcb_st_xdr.c       2002/03/04 07:40:51
@@ -262,6 +262,9 @@
        if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
                return (FALSE);
        }
+       if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) {
+               return (FALSE);
+       }
        return (TRUE);
 }

>Release-Note:
>Audit-Trail:
>Unformatted: