|
@@ -496,6 +496,14 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry)
|
|
return;
|
|
return;
|
|
if (!(entry->fattr->valid & NFS_ATTR_FATTR_FSID))
|
|
if (!(entry->fattr->valid & NFS_ATTR_FATTR_FSID))
|
|
return;
|
|
return;
|
|
|
|
+ if (filename.len == 0)
|
|
|
|
+ return;
|
|
|
|
+ /* Validate that the name doesn't contain any illegal '\0' */
|
|
|
|
+ if (strnlen(filename.name, filename.len) != filename.len)
|
|
|
|
+ return;
|
|
|
|
+ /* ...or '/' */
|
|
|
|
+ if (strnchr(filename.name, filename.len, '/'))
|
|
|
|
+ return;
|
|
if (filename.name[0] == '.') {
|
|
if (filename.name[0] == '.') {
|
|
if (filename.len == 1)
|
|
if (filename.len == 1)
|
|
return;
|
|
return;
|