From adb130d10aefc4ace7e2db13891fcdc941fc7670 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Thu, 29 Nov 2012 22:17:21 -0500 Subject: [PATCH] --- yaml --- r: 336176 b: refs/heads/master c: 21d8a15ac333b05f1fecdf9fdc30996be2e11d60 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/namei.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index efa252a921f3..f3c7343d7efe 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0903a0c8491c1e987dfc6eb294199a36760398bc +refs/heads/master: 21d8a15ac333b05f1fecdf9fdc30996be2e11d60 diff --git a/trunk/fs/namei.c b/trunk/fs/namei.c index 937f9d50c84b..5f4cdf3ad913 100644 --- a/trunk/fs/namei.c +++ b/trunk/fs/namei.c @@ -2131,6 +2131,11 @@ struct dentry *lookup_one_len(const char *name, struct dentry *base, int len) if (!len) return ERR_PTR(-EACCES); + if (unlikely(name[0] == '.')) { + if (len < 2 || (len == 2 && name[1] == '.')) + return ERR_PTR(-EACCES); + } + while (len--) { c = *(const unsigned char *)name++; if (c == '/' || c == '\0')