From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve French Subject: Re: [PATCH 1/8] cifs: Fix xattr name checks Date: Wed, 13 Apr 2016 23:26:24 -0500 Message-ID: References: <20160413182026.GR25498@ZenIV.linux.org.uk> <1460586620-5717-1-git-send-email-agruenba@redhat.com> <1460586620-5717-2-git-send-email-agruenba@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Cc: Al Viro , Steve French , "linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org To: Andreas Gruenbacher Return-path: In-Reply-To: <1460586620-5717-2-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Thanks for spotting this - merged into cifs-2.6.git. checkpatch spotted and old indentation issue so I cleaned that up in a followon patch that I will send. On Wed, Apr 13, 2016 at 5:30 PM, Andreas Gruenbacher wrote: > Use strcmp(str, name) instead of strncmp(str, name, strlen(name)) for > checking if str and name are the same (as opposed to name being a prefix > of str) in the gexattr and setxattr inode operations. > > Signed-off-by: Andreas Gruenbacher > --- > fs/cifs/xattr.c | 24 ++++++++---------------- > 1 file changed, 8 insertions(+), 16 deletions(-) > > diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c > index 5d57c85..6e73ba9 100644 > --- a/fs/cifs/xattr.c > +++ b/fs/cifs/xattr.c > @@ -129,7 +129,7 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name, > == 0) { > if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR) > goto set_ea_exit; > - if (strncmp(ea_name, CIFS_XATTR_DOS_ATTRIB, 14) == 0) > + if (strcmp(ea_name, CIFS_XATTR_DOS_ATTRIB) == 0) > cifs_dbg(FYI, "attempt to set cifs inode metadata\n"); > > ea_name += XATTR_USER_PREFIX_LEN; /* skip past user. prefix */ > @@ -147,8 +147,7 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name, > rc = pTcon->ses->server->ops->set_EA(xid, pTcon, > full_path, ea_name, ea_value, (__u16)value_size, > cifs_sb->local_nls, cifs_remap(cifs_sb)); > - } else if (strncmp(ea_name, CIFS_XATTR_CIFS_ACL, > - strlen(CIFS_XATTR_CIFS_ACL)) == 0) { > + } else if (strcmp(ea_name, CIFS_XATTR_CIFS_ACL) == 0) { > #ifdef CONFIG_CIFS_ACL > struct cifs_ntsd *pacl; > pacl = kmalloc(value_size, GFP_KERNEL); > @@ -170,10 +169,7 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name, > cifs_dbg(FYI, "Set CIFS ACL not supported yet\n"); > #endif /* CONFIG_CIFS_ACL */ > } else { > - int temp; > - temp = strncmp(ea_name, XATTR_NAME_POSIX_ACL_ACCESS, > - strlen(XATTR_NAME_POSIX_ACL_ACCESS)); > - if (temp == 0) { > + if (strcmp(ea_name, XATTR_NAME_POSIX_ACL_ACCESS) == 0) { > #ifdef CONFIG_CIFS_POSIX > if (sb->s_flags & MS_POSIXACL) > rc = CIFSSMBSetPosixACL(xid, pTcon, full_path, > @@ -184,8 +180,7 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name, > #else > cifs_dbg(FYI, "set POSIX ACL not supported\n"); > #endif > - } else if (strncmp(ea_name, XATTR_NAME_POSIX_ACL_DEFAULT, > - strlen(XATTR_NAME_POSIX_ACL_DEFAULT)) == 0) { > + } else if (strcmp(ea_name, XATTR_NAME_POSIX_ACL_DEFAULT) == 0) { > #ifdef CONFIG_CIFS_POSIX > if (sb->s_flags & MS_POSIXACL) > rc = CIFSSMBSetPosixACL(xid, pTcon, full_path, > @@ -246,7 +241,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, struct inode *inode, > if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR) > goto get_ea_exit; > > - if (strncmp(ea_name, CIFS_XATTR_DOS_ATTRIB, 14) == 0) { > + if (strcmp(ea_name, CIFS_XATTR_DOS_ATTRIB) == 0) { > cifs_dbg(FYI, "attempt to query cifs inode metadata\n"); > /* revalidate/getattr then populate from inode */ > } /* BB add else when above is implemented */ > @@ -264,8 +259,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, struct inode *inode, > rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon, > full_path, ea_name, ea_value, buf_size, > cifs_sb->local_nls, cifs_remap(cifs_sb)); > - } else if (strncmp(ea_name, XATTR_NAME_POSIX_ACL_ACCESS, > - strlen(XATTR_NAME_POSIX_ACL_ACCESS)) == 0) { > + } else if (strcmp(ea_name, XATTR_NAME_POSIX_ACL_ACCESS) == 0) { > #ifdef CONFIG_CIFS_POSIX > if (sb->s_flags & MS_POSIXACL) > rc = CIFSSMBGetPosixACL(xid, pTcon, full_path, > @@ -275,8 +269,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, struct inode *inode, > #else > cifs_dbg(FYI, "Query POSIX ACL not supported yet\n"); > #endif /* CONFIG_CIFS_POSIX */ > - } else if (strncmp(ea_name, XATTR_NAME_POSIX_ACL_DEFAULT, > - strlen(XATTR_NAME_POSIX_ACL_DEFAULT)) == 0) { > + } else if (strcmp(ea_name, XATTR_NAME_POSIX_ACL_DEFAULT) == 0) { > #ifdef CONFIG_CIFS_POSIX > if (sb->s_flags & MS_POSIXACL) > rc = CIFSSMBGetPosixACL(xid, pTcon, full_path, > @@ -286,8 +279,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, struct inode *inode, > #else > cifs_dbg(FYI, "Query POSIX default ACL not supported yet\n"); > #endif /* CONFIG_CIFS_POSIX */ > - } else if (strncmp(ea_name, CIFS_XATTR_CIFS_ACL, > - strlen(CIFS_XATTR_CIFS_ACL)) == 0) { > + } else if (strcmp(ea_name, CIFS_XATTR_CIFS_ACL) == 0) { > #ifdef CONFIG_CIFS_ACL > u32 acllen; > struct cifs_ntsd *pacl; > -- > 2.4.11 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Thanks, Steve From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve French Date: Wed, 13 Apr 2016 23:26:24 -0500 Subject: [Cluster-devel] [PATCH 1/8] cifs: Fix xattr name checks In-Reply-To: <1460586620-5717-2-git-send-email-agruenba@redhat.com> References: <20160413182026.GR25498@ZenIV.linux.org.uk> <1460586620-5717-1-git-send-email-agruenba@redhat.com> <1460586620-5717-2-git-send-email-agruenba@redhat.com> Message-ID: List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Thanks for spotting this - merged into cifs-2.6.git. checkpatch spotted and old indentation issue so I cleaned that up in a followon patch that I will send. On Wed, Apr 13, 2016 at 5:30 PM, Andreas Gruenbacher wrote: > Use strcmp(str, name) instead of strncmp(str, name, strlen(name)) for > checking if str and name are the same (as opposed to name being a prefix > of str) in the gexattr and setxattr inode operations. > > Signed-off-by: Andreas Gruenbacher > --- > fs/cifs/xattr.c | 24 ++++++++---------------- > 1 file changed, 8 insertions(+), 16 deletions(-) > > diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c > index 5d57c85..6e73ba9 100644 > --- a/fs/cifs/xattr.c > +++ b/fs/cifs/xattr.c > @@ -129,7 +129,7 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name, > == 0) { > if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR) > goto set_ea_exit; > - if (strncmp(ea_name, CIFS_XATTR_DOS_ATTRIB, 14) == 0) > + if (strcmp(ea_name, CIFS_XATTR_DOS_ATTRIB) == 0) > cifs_dbg(FYI, "attempt to set cifs inode metadata\n"); > > ea_name += XATTR_USER_PREFIX_LEN; /* skip past user. prefix */ > @@ -147,8 +147,7 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name, > rc = pTcon->ses->server->ops->set_EA(xid, pTcon, > full_path, ea_name, ea_value, (__u16)value_size, > cifs_sb->local_nls, cifs_remap(cifs_sb)); > - } else if (strncmp(ea_name, CIFS_XATTR_CIFS_ACL, > - strlen(CIFS_XATTR_CIFS_ACL)) == 0) { > + } else if (strcmp(ea_name, CIFS_XATTR_CIFS_ACL) == 0) { > #ifdef CONFIG_CIFS_ACL > struct cifs_ntsd *pacl; > pacl = kmalloc(value_size, GFP_KERNEL); > @@ -170,10 +169,7 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name, > cifs_dbg(FYI, "Set CIFS ACL not supported yet\n"); > #endif /* CONFIG_CIFS_ACL */ > } else { > - int temp; > - temp = strncmp(ea_name, XATTR_NAME_POSIX_ACL_ACCESS, > - strlen(XATTR_NAME_POSIX_ACL_ACCESS)); > - if (temp == 0) { > + if (strcmp(ea_name, XATTR_NAME_POSIX_ACL_ACCESS) == 0) { > #ifdef CONFIG_CIFS_POSIX > if (sb->s_flags & MS_POSIXACL) > rc = CIFSSMBSetPosixACL(xid, pTcon, full_path, > @@ -184,8 +180,7 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name, > #else > cifs_dbg(FYI, "set POSIX ACL not supported\n"); > #endif > - } else if (strncmp(ea_name, XATTR_NAME_POSIX_ACL_DEFAULT, > - strlen(XATTR_NAME_POSIX_ACL_DEFAULT)) == 0) { > + } else if (strcmp(ea_name, XATTR_NAME_POSIX_ACL_DEFAULT) == 0) { > #ifdef CONFIG_CIFS_POSIX > if (sb->s_flags & MS_POSIXACL) > rc = CIFSSMBSetPosixACL(xid, pTcon, full_path, > @@ -246,7 +241,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, struct inode *inode, > if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR) > goto get_ea_exit; > > - if (strncmp(ea_name, CIFS_XATTR_DOS_ATTRIB, 14) == 0) { > + if (strcmp(ea_name, CIFS_XATTR_DOS_ATTRIB) == 0) { > cifs_dbg(FYI, "attempt to query cifs inode metadata\n"); > /* revalidate/getattr then populate from inode */ > } /* BB add else when above is implemented */ > @@ -264,8 +259,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, struct inode *inode, > rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon, > full_path, ea_name, ea_value, buf_size, > cifs_sb->local_nls, cifs_remap(cifs_sb)); > - } else if (strncmp(ea_name, XATTR_NAME_POSIX_ACL_ACCESS, > - strlen(XATTR_NAME_POSIX_ACL_ACCESS)) == 0) { > + } else if (strcmp(ea_name, XATTR_NAME_POSIX_ACL_ACCESS) == 0) { > #ifdef CONFIG_CIFS_POSIX > if (sb->s_flags & MS_POSIXACL) > rc = CIFSSMBGetPosixACL(xid, pTcon, full_path, > @@ -275,8 +269,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, struct inode *inode, > #else > cifs_dbg(FYI, "Query POSIX ACL not supported yet\n"); > #endif /* CONFIG_CIFS_POSIX */ > - } else if (strncmp(ea_name, XATTR_NAME_POSIX_ACL_DEFAULT, > - strlen(XATTR_NAME_POSIX_ACL_DEFAULT)) == 0) { > + } else if (strcmp(ea_name, XATTR_NAME_POSIX_ACL_DEFAULT) == 0) { > #ifdef CONFIG_CIFS_POSIX > if (sb->s_flags & MS_POSIXACL) > rc = CIFSSMBGetPosixACL(xid, pTcon, full_path, > @@ -286,8 +279,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, struct inode *inode, > #else > cifs_dbg(FYI, "Query POSIX default ACL not supported yet\n"); > #endif /* CONFIG_CIFS_POSIX */ > - } else if (strncmp(ea_name, CIFS_XATTR_CIFS_ACL, > - strlen(CIFS_XATTR_CIFS_ACL)) == 0) { > + } else if (strcmp(ea_name, CIFS_XATTR_CIFS_ACL) == 0) { > #ifdef CONFIG_CIFS_ACL > u32 acllen; > struct cifs_ntsd *pacl; > -- > 2.4.11 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Thanks, Steve