• Chuck Lever's avatar
    SUNRPC: Fix GSS privacy computation of auth->au_ralign · a7e429a6
    Chuck Lever authored
    When the au_ralign field was added to gss_unwrap_resp_priv, the
    wrong calculation was used. Setting au_rslack == au_ralign is
    probably correct for kerberos_v1 privacy, but kerberos_v2 privacy
    adds additional GSS data after the clear text RPC message.
    au_ralign needs to be smaller than au_rslack in that fairly common
    case.
    
    When xdr_buf_trim() is restored to gss_unwrap_kerberos_v2(), it does
    exactly what I feared it would: it trims off part of the clear text
    RPC message. However, that's because rpc_prepare_reply_pages() does
    not set up the rq_rcv_buf's tail correctly because au_ralign is too
    large.
    
    Fixing the au_ralign computation also corrects the alignment of
    rq_rcv_buf->pages so that the client does not have to shift reply
    data payloads after they are received.
    
    Fixes: 35e77d21 ("SUNRPC: Add rpc_auth::au_ralign field")
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    a7e429a6
auth_gss.c 55.8 KB