From: Matthew N. Dodd Date: Mon, 20 Jun 2011 17:32:58 +0000 (-0400) Subject: PCSEC_GSS_SVC_PRIVACY failure. X-Git-Tag: libtirpc-0-2-3-rc1~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=84570a5f6c5d588d38fb4d42fb13048e62bea71d;p=libtirpc PCSEC_GSS_SVC_PRIVACY failure. in authgss_prot.c:xdr_rpc_gss_wrap_data(), gss_wrap() is called in the svc == RPCSEC_GSS_SVC_PRIVACY conditional block with databuf.length uninitialized. Initialization performed in the svc == RPCSEC_GSS_SVC_INTEGRITY conditional block should be moved. Signed-off-by: Frank Filz Signed-off-by: Steve Dickson --- diff --git a/src/authgss_prot.c b/src/authgss_prot.c index 9d7fa09..0168318 100644 --- a/src/authgss_prot.c +++ b/src/authgss_prot.c @@ -161,6 +161,7 @@ xdr_rpc_gss_wrap_data(XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr, databuflen = end - start - 4; XDR_SETPOS(xdrs, start + 4); databuf.value = XDR_INLINE(xdrs, databuflen); + databuf.length = databuflen; xdr_stat = FALSE; @@ -169,7 +170,6 @@ xdr_rpc_gss_wrap_data(XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr, XDR_SETPOS(xdrs, start); if (!xdr_u_int(xdrs, (u_int *)&databuflen)) return (FALSE); - databuf.length = databuflen; /* Checksum rpc_gss_data_t. */ maj_stat = gss_get_mic(&min_stat, ctx, qop,