-------------------------------------------------------------------------------- Fedora Update Notification FEDORA-2009-1171 2009-01-29 22:32:13 --------------------------------------------------------------------------------
Name : libtirpc Product : Fedora 10 Version : 0.1.10 Release : 2.fc10 URL : http://nfsv4.bullopensource.org/ Summary : Transport Independent RPC Library Description : This package contains SunLib's implementation of transport-independent RPC (TI-RPC) documentation. This library forms a piece of the base of Open Network Computing (ONC), and is derived directly from the Solaris 2.3 source.
TI-RPC is an enhanced version of TS-RPC that requires the UNIX System V Transport Layer Interface (TLI) or an equivalent X/Open Transport Interface (XTI). TI-RPC is on-the-wire compatible with the TS-RPC, which is supported by almost 70 vendors on all major operating systems. TS-RPC source code (RPCSRC 4.0) remains available from several internet sites.
-------------------------------------------------------------------------------- Update Information:
commit 2bb4c8d7ec8a98e1be9133d5901149a81ea9b5d9 Author: Chuck Lever chuck.lever@oracle.com Date: Wed Jan 28 09:19:07 2009 -0500 backwards compatibility: fix order of fields in TI-RPC's svc_req Preserve ABI compatibility between glibc's RPC implementation and the legacy RPC implementation in libtirpc by moving the rq_xprt field in the TI-RPC version of the svc_req struct so it is backwards compatible with the legacy version of this structure. Linux's legacy svc_req struct, from /usr/include/rpc/svc.h, looks like this: struct svc_req { rpcprog_t rq_prog; /* service program number */ rpcvers_t rq_vers; /* service protocol version */ rpcproc_t rq_proc; /* the desired procedure */ struct opaque_auth rq_cred; /* raw creds from the wire */ caddr_t rq_clntcred; /* read only cooked cred */ SVCXPRT *rq_xprt; /* associated transport */ }; The new TI-RPC svc_req struct, from /usr/include/tirpc/rpc/svc.h, looks like this: struct svc_req { u_int32_t rq_prog; /* service program number */ u_int32_t rq_vers; /* service protocol version */ u_int32_t rq_proc; /* the desired procedure */ struct opaque_auth rq_cred; /* raw creds from the wire */ void *rq_clntcred; /* read only cooked cred */ caddr_t rq_clntname; /* read only client name */ caddr_t rq_svcname; /* read only cooked service cred */ SVCXPRT *rq_xprt; /* associated transport */ }; Note the extra fields rq_clntname and rq_svcname. These are used for TI-RPC's RPCSEC GSS flavor support. This issue came to light because rpc.statd still uses only legacy RPC calls, and thus includes /usr/include/rpc/svc.h. However, other parts of nfs-utils now link with TI-RPC, so the legacy RPC functions in libtirpc are used in favor of glibc's RPC functions. The libtirpc svc functions use the new svc_req struct, but rpc.statd uses the old svc_req struct. Since the svc_req fields were different, rpc.statd broke after recent IPv6-related changes, even though I hadn't made any changes to it. Note that rpc.mountd also references the rq_xprt field, so it has the same issue. In most operating systems, there is only one rpc/svc.h and one version of svc_req so this is not a problem. We should audit all of the structures and functions under /usr/include/rpc and /usr/include/tirpc/rpc to ensure we have a reasonable level of backwards compatibility until such a time it is decided to merge these implementations or get rid of RPC support in glibc. -------------------------------------------------------------------------------- ChangeLog:
* Wed Jan 28 2009 Steve Dickson steved@redhat.com 0.1.10-2 - backwards compatibility: fix order of fields in TI-RPC's svc_req (bz 481388) - Removed a number warnings. - Header file fixes for C++ -------------------------------------------------------------------------------- References:
[ 1 ] Bug #481388 - svc_req ABI incompatibility between glibc and libtirpc https://bugzilla.redhat.com/show_bug.cgi?id=481388 --------------------------------------------------------------------------------
This update can be installed with the "yum" update program. Use su -c 'yum update libtirpc' at the command line. For more information, refer to "Managing Software with yum", available at http://docs.fedoraproject.org/yum/.
All packages are signed with the Fedora Project GPG key. More details on the GPG keys used by the Fedora Project can be found at http://fedoraproject.org/keys --------------------------------------------------------------------------------
package-announce@lists.fedoraproject.org