diff options
-rw-r--r-- | module/zfs/zfs_vnops.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c index 4a0f20166..7601e7618 100644 --- a/module/zfs/zfs_vnops.c +++ b/module/zfs/zfs_vnops.c @@ -1313,6 +1313,9 @@ zfs_create(struct inode *dip, char *name, vattr_t *vap, int excl, (vsecp || IS_EPHEMERAL(uid) || IS_EPHEMERAL(gid))) return (SET_ERROR(EINVAL)); + if (name == NULL) + return (SET_ERROR(EINVAL)); + ZFS_ENTER(zsb); ZFS_VERIFY_ZP(dzp); os = zsb->z_os; @@ -1667,6 +1670,9 @@ zfs_remove(struct inode *dip, char *name, cred_t *cr, int flags) int zflg = ZEXISTS; boolean_t waited = B_FALSE; + if (name == NULL) + return (SET_ERROR(EINVAL)); + ZFS_ENTER(zsb); ZFS_VERIFY_ZP(dzp); zilog = zsb->z_log; @@ -1918,6 +1924,9 @@ zfs_mkdir(struct inode *dip, char *dirname, vattr_t *vap, struct inode **ipp, (vsecp || IS_EPHEMERAL(uid) || IS_EPHEMERAL(gid))) return (SET_ERROR(EINVAL)); + if (dirname == NULL) + return (SET_ERROR(EINVAL)); + ZFS_ENTER(zsb); ZFS_VERIFY_ZP(dzp); zilog = zsb->z_log; @@ -2080,6 +2089,9 @@ zfs_rmdir(struct inode *dip, char *name, struct inode *cwd, cred_t *cr, int zflg = ZEXISTS; boolean_t waited = B_FALSE; + if (name == NULL) + return (SET_ERROR(EINVAL)); + ZFS_ENTER(zsb); ZFS_VERIFY_ZP(dzp); zilog = zsb->z_log; @@ -3382,6 +3394,9 @@ zfs_rename(struct inode *sdip, char *snm, struct inode *tdip, char *tnm, int zflg = 0; boolean_t waited = B_FALSE; + if (snm == NULL || tnm == NULL) + return (SET_ERROR(EINVAL)); + ZFS_ENTER(zsb); ZFS_VERIFY_ZP(sdzp); zilog = zsb->z_log; @@ -3726,6 +3741,9 @@ zfs_symlink(struct inode *dip, char *name, vattr_t *vap, char *link, ASSERT(S_ISLNK(vap->va_mode)); + if (name == NULL) + return (SET_ERROR(EINVAL)); + ZFS_ENTER(zsb); ZFS_VERIFY_ZP(dzp); zilog = zsb->z_log; @@ -3926,6 +3944,9 @@ zfs_link(struct inode *tdip, struct inode *sip, char *name, cred_t *cr, #endif ASSERT(S_ISDIR(tdip->i_mode)); + if (name == NULL) + return (SET_ERROR(EINVAL)); + ZFS_ENTER(zsb); ZFS_VERIFY_ZP(dzp); zilog = zsb->z_log; |