Loading fs/nfsd/nfs4xdr.c +9 −12 Original line number Diff line number Diff line Loading @@ -2117,25 +2117,22 @@ nfsd4_vbuf_from_vector(struct nfsd4_compoundargs *argp, struct xdr_buf *xdr, static __be32 nfsd4_decode_xattr_name(struct nfsd4_compoundargs *argp, char **namep) { DECODE_HEAD; char *name, *sp, *dp; u32 namelen, cnt; __be32 *p; READ_BUF(4); namelen = be32_to_cpup(p++); if (xdr_stream_decode_u32(argp->xdr, &namelen) < 0) return nfserr_bad_xdr; if (namelen > (XATTR_NAME_MAX - XATTR_USER_PREFIX_LEN)) return nfserr_nametoolong; if (namelen == 0) goto xdr_error; READ_BUF(namelen); return nfserr_bad_xdr; p = xdr_inline_decode(argp->xdr, namelen); if (!p) return nfserr_bad_xdr; name = svcxdr_tmpalloc(argp, namelen + XATTR_USER_PREFIX_LEN + 1); if (!name) return nfserr_jukebox; memcpy(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN); /* Loading @@ -2148,14 +2145,14 @@ nfsd4_decode_xattr_name(struct nfsd4_compoundargs *argp, char **namep) while (cnt-- > 0) { if (*sp == '\0') goto xdr_error; return nfserr_bad_xdr; *dp++ = *sp++; } *dp = '\0'; *namep = name; DECODE_TAIL; return nfs_ok; } /* Loading Loading
fs/nfsd/nfs4xdr.c +9 −12 Original line number Diff line number Diff line Loading @@ -2117,25 +2117,22 @@ nfsd4_vbuf_from_vector(struct nfsd4_compoundargs *argp, struct xdr_buf *xdr, static __be32 nfsd4_decode_xattr_name(struct nfsd4_compoundargs *argp, char **namep) { DECODE_HEAD; char *name, *sp, *dp; u32 namelen, cnt; __be32 *p; READ_BUF(4); namelen = be32_to_cpup(p++); if (xdr_stream_decode_u32(argp->xdr, &namelen) < 0) return nfserr_bad_xdr; if (namelen > (XATTR_NAME_MAX - XATTR_USER_PREFIX_LEN)) return nfserr_nametoolong; if (namelen == 0) goto xdr_error; READ_BUF(namelen); return nfserr_bad_xdr; p = xdr_inline_decode(argp->xdr, namelen); if (!p) return nfserr_bad_xdr; name = svcxdr_tmpalloc(argp, namelen + XATTR_USER_PREFIX_LEN + 1); if (!name) return nfserr_jukebox; memcpy(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN); /* Loading @@ -2148,14 +2145,14 @@ nfsd4_decode_xattr_name(struct nfsd4_compoundargs *argp, char **namep) while (cnt-- > 0) { if (*sp == '\0') goto xdr_error; return nfserr_bad_xdr; *dp++ = *sp++; } *dp = '\0'; *namep = name; DECODE_TAIL; return nfs_ok; } /* Loading