]> granicus.if.org Git - libtirpc/commitdiff
Segfault in SVCAUTH_WRAP call libtirpc-0-2-3-rc2
authorSteve Dickson <steved@redhat.com>
Wed, 20 Jul 2011 13:47:49 +0000 (09:47 -0400)
committerSteve Dickson <steved@redhat.com>
Wed, 20 Jul 2011 15:21:32 +0000 (11:21 -0400)
The xprt->xp_auth pointer need to be checked before
used in the SVCAUTH_WRAP call since it can be NULL
during error conditions.

Signed-off-by: Steve Dickson <steved@redhat.com>
src/svc_dg.c
src/svc_vc.c

index 5ef9df267fedb79a1a84499fbee632d8ca97d2aa..081db614c4f0bcb657d42d095c861b78013bb2fe 100644 (file)
@@ -254,8 +254,8 @@ svc_dg_reply(xprt, msg)
        XDR_SETPOS(xdrs, 0);
        msg->rm_xid = su->su_xid;
        if (xdr_replymsg(xdrs, msg) &&
-           (!has_args ||
-            (SVCAUTH_WRAP(xprt->xp_auth, xdrs, xdr_results, xdr_location)))) {
+           (!has_args || (xprt->xp_auth &&
+            SVCAUTH_WRAP(xprt->xp_auth, xdrs, xdr_results, xdr_location)))) {
                struct msghdr *msg = &su->su_msghdr;
                struct iovec iov;
 
index 74632e2a98bb9365e39197119303a1da09561b33..4c70de84e23660334bdf65d5314041fa0265d3a7 100644 (file)
@@ -698,8 +698,8 @@ svc_vc_reply(xprt, msg)
        msg->rm_xid = cd->x_id;
        rstat = FALSE;
        if (xdr_replymsg(xdrs, msg) &&
-           (!has_args ||
-            (SVCAUTH_WRAP(xprt->xp_auth, xdrs, xdr_results, xdr_location)))) {
+           (!has_args || (xprt->xp_auth &&
+            SVCAUTH_WRAP(xprt->xp_auth, xdrs, xdr_results, xdr_location)))) {
                rstat = TRUE;
        }
        (void)xdrrec_endofrecord(xdrs, TRUE);