diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c index 6d17388c4f1..6b6ab3d2d01 100644 --- a/sys/nfs/nfs_vnops.c +++ b/sys/nfs/nfs_vnops.c @@ -1,4 +1,4 @@ -/* $OpenBSD: nfs_vnops.c,v 1.210 2026/04/22 01:43:48 jsg Exp $ */ +/* $OpenBSD: nfs_vnops.c,v 1.211 2026/06/09 02:36:29 jsg Exp $ */ /* $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $ */ /* @@ -911,7 +911,7 @@ dorpc: info.nmi_mb = info.nmi_mreq = nfsm_reqhead(NFSX_FH(info.nmi_v3) + NFSX_UNSIGNED + nfsm_rndup(len)); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, cnp->cn_nameptr, len, NFS_MAXNAMLEN) != 0) + if (nfsm_strtom(&info, &info.nmi_mb, cnp->cn_nameptr, len, NFS_MAXNAMLEN) != 0) goto nfsmout; info.nmi_procp = cnp->cn_proc; @@ -1461,7 +1461,7 @@ nfs_mknodrpc(struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, 4 * NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen) + NFSX_SATTR(info.nmi_v3)); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, cnp->cn_nameptr, cnp->cn_namelen, + if (nfsm_strtom(&info, &info.nmi_mb, cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN) != 0) goto nfsmout; @@ -1573,7 +1573,7 @@ again: 2 * NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen) + NFSX_SATTR(info.nmi_v3)); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, cnp->cn_nameptr, cnp->cn_namelen, + if (nfsm_strtom(&info, &info.nmi_mb, cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN) != 0) goto nfsmout; if (info.nmi_v3) { @@ -1751,7 +1751,7 @@ nfs_removerpc(struct vnode *dvp, char *name, int namelen, struct ucred *cred, info.nmi_mb = info.nmi_mreq = nfsm_reqhead(NFSX_FH(info.nmi_v3) + NFSX_UNSIGNED + nfsm_rndup(namelen)); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, name, namelen, NFS_MAXNAMLEN) != 0) + if (nfsm_strtom(&info, &info.nmi_mb, name, namelen, NFS_MAXNAMLEN) != 0) goto nfsmout; info.nmi_procp = proc; @@ -1866,10 +1866,10 @@ nfs_renamerpc(struct vnode *fdvp, char *fnameptr, int fnamelen, info.nmi_mb = info.nmi_mreq = nfsm_reqhead((NFSX_FH(info.nmi_v3) + NFSX_UNSIGNED) * 2 + nfsm_rndup(fnamelen) + nfsm_rndup(tnamelen)); nfsm_fhtom(&info, fdvp, info.nmi_v3); - if (nfsm_strtom(&info, fnameptr, fnamelen, NFS_MAXNAMLEN) != 0) + if (nfsm_strtom(&info, &info.nmi_mb, fnameptr, fnamelen, NFS_MAXNAMLEN) != 0) goto nfsmout; nfsm_fhtom(&info, tdvp, info.nmi_v3); - if (nfsm_strtom(&info, tnameptr, tnamelen, NFS_MAXNAMLEN) != 0) + if (nfsm_strtom(&info, &info.nmi_mb, tnameptr, tnamelen, NFS_MAXNAMLEN) != 0) goto nfsmout; info.nmi_procp = proc; @@ -1928,7 +1928,7 @@ nfs_link(void *v) NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen)); nfsm_fhtom(&info, vp, info.nmi_v3); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, cnp->cn_nameptr, cnp->cn_namelen, + if (nfsm_strtom(&info, &info.nmi_mb, cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN) != 0) goto nfsmout; @@ -1981,12 +1981,12 @@ nfs_symlink(void *v) 2 * NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen) + nfsm_rndup(slen) + NFSX_SATTR(info.nmi_v3)); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, cnp->cn_nameptr, cnp->cn_namelen, + if (nfsm_strtom(&info, &info.nmi_mb, cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN) != 0) goto nfsmout; if (info.nmi_v3) nfsm_v3attrbuild(&info.nmi_mb, vap, 0); - if (nfsm_strtom(&info, ap->a_target, slen, NFS_MAXPATHLEN) != 0) + if (nfsm_strtom(&info, &info.nmi_mb, ap->a_target, slen, NFS_MAXPATHLEN) != 0) goto nfsmout; if (!info.nmi_v3) { sp = nfsm_build(&info.nmi_mb, NFSX_V2SATTR); @@ -2049,7 +2049,7 @@ nfs_mkdir(void *v) info.nmi_mb = info.nmi_mreq = nfsm_reqhead(NFSX_FH(info.nmi_v3) + NFSX_UNSIGNED + nfsm_rndup(len) + NFSX_SATTR(info.nmi_v3)); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, cnp->cn_nameptr, len, NFS_MAXNAMLEN) != 0) + if (nfsm_strtom(&info, &info.nmi_mb, cnp->cn_nameptr, len, NFS_MAXNAMLEN) != 0) goto nfsmout; if (info.nmi_v3) { @@ -2125,7 +2125,7 @@ nfs_rmdir(void *v) info.nmi_mb = info.nmi_mreq = nfsm_reqhead(NFSX_FH(info.nmi_v3) + NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen)); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, cnp->cn_nameptr, cnp->cn_namelen, + if (nfsm_strtom(&info, &info.nmi_mb, cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN) != 0) goto nfsmout; @@ -2863,7 +2863,7 @@ nfs_lookitup(struct vnode *dvp, char *name, int len, struct ucred *cred, info.nmi_mb = info.nmi_mreq = nfsm_reqhead(NFSX_FH(info.nmi_v3) + NFSX_UNSIGNED + nfsm_rndup(len)); nfsm_fhtom(&info, dvp, info.nmi_v3); - if (nfsm_strtom(&info, name, len, NFS_MAXNAMLEN) != 0) + if (nfsm_strtom(&info, &info.nmi_mb, name, len, NFS_MAXNAMLEN) != 0) goto nfsmout; info.nmi_procp = procp; diff --git a/sys/nfs/nfsm_subs.h b/sys/nfs/nfsm_subs.h index 2a794811b8a..296dbbe9263 100644 --- a/sys/nfs/nfsm_subs.h +++ b/sys/nfs/nfsm_subs.h @@ -1,4 +1,4 @@ -/* $OpenBSD: nfsm_subs.h,v 1.49 2024/09/11 12:22:34 claudio Exp $ */ +/* $OpenBSD: nfsm_subs.h,v 1.50 2026/06/09 02:36:29 jsg Exp $ */ /* $NetBSD: nfsm_subs.h,v 1.10 1996/03/20 21:59:56 fvdl Exp $ */ /* @@ -170,7 +170,8 @@ nfsm_mtouio(struct nfsm_info *infop, struct uio *uiop, int len) } static inline int -nfsm_strtom(struct nfsm_info *infop, char *str, size_t len, size_t maxlen) +nfsm_strtom(struct nfsm_info *infop, struct mbuf **mb, + char *str, size_t len, size_t maxlen) { if (len > maxlen) { m_freem(infop->nmi_mreq); @@ -178,7 +179,7 @@ nfsm_strtom(struct nfsm_info *infop, char *str, size_t len, size_t maxlen) *infop->nmi_errorp = ENAMETOOLONG; return 1; } - nfsm_strtombuf(&infop->nmi_mb, str, len); + nfsm_strtombuf(mb, str, len); return 0; }