|
@@ -5205,27 +5205,30 @@ static int decode_delegreturn(struct xdr_stream *xdr)
|
|
|
return decode_op_hdr(xdr, OP_DELEGRETURN);
|
|
|
}
|
|
|
|
|
|
-static int decode_secinfo_gss(struct xdr_stream *xdr, struct nfs4_secinfo_flavor *flavor)
|
|
|
+static int decode_secinfo_gss(struct xdr_stream *xdr,
|
|
|
+ struct nfs4_secinfo4 *flavor)
|
|
|
{
|
|
|
+ u32 oid_len;
|
|
|
__be32 *p;
|
|
|
|
|
|
p = xdr_inline_decode(xdr, 4);
|
|
|
if (unlikely(!p))
|
|
|
goto out_overflow;
|
|
|
- flavor->gss.sec_oid4.len = be32_to_cpup(p);
|
|
|
- if (flavor->gss.sec_oid4.len > GSS_OID_MAX_LEN)
|
|
|
+ oid_len = be32_to_cpup(p);
|
|
|
+ if (oid_len > GSS_OID_MAX_LEN)
|
|
|
goto out_err;
|
|
|
|
|
|
- p = xdr_inline_decode(xdr, flavor->gss.sec_oid4.len);
|
|
|
+ p = xdr_inline_decode(xdr, oid_len);
|
|
|
if (unlikely(!p))
|
|
|
goto out_overflow;
|
|
|
- memcpy(flavor->gss.sec_oid4.data, p, flavor->gss.sec_oid4.len);
|
|
|
+ memcpy(flavor->flavor_info.oid.data, p, oid_len);
|
|
|
+ flavor->flavor_info.oid.len = oid_len;
|
|
|
|
|
|
p = xdr_inline_decode(xdr, 8);
|
|
|
if (unlikely(!p))
|
|
|
goto out_overflow;
|
|
|
- flavor->gss.qop4 = be32_to_cpup(p++);
|
|
|
- flavor->gss.service = be32_to_cpup(p);
|
|
|
+ flavor->flavor_info.qop = be32_to_cpup(p++);
|
|
|
+ flavor->flavor_info.service = be32_to_cpup(p);
|
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -5238,10 +5241,10 @@ out_err:
|
|
|
|
|
|
static int decode_secinfo_common(struct xdr_stream *xdr, struct nfs4_secinfo_res *res)
|
|
|
{
|
|
|
- struct nfs4_secinfo_flavor *sec_flavor;
|
|
|
+ struct nfs4_secinfo4 *sec_flavor;
|
|
|
+ unsigned int i, num_flavors;
|
|
|
int status;
|
|
|
__be32 *p;
|
|
|
- int i, num_flavors;
|
|
|
|
|
|
p = xdr_inline_decode(xdr, 4);
|
|
|
if (unlikely(!p))
|