summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuane Griffin <duaneg@dghda.com>2008-12-19 21:47:11 +0100
committerAl Viro <viro@zeniv.linux.org.uk>2009-01-01 00:07:38 +0100
commit035146851cfa2fe24c1d9dc7637bb009ad06b2f7 (patch)
treeb6dd89c60a2100e1c0c48abd1688d3d2ff5f5607
parenteCryptfs: check readlink result was not an error before using it (diff)
downloadlinux-035146851cfa2fe24c1d9dc7637bb009ad06b2f7.tar.xz
linux-035146851cfa2fe24c1d9dc7637bb009ad06b2f7.zip
vfs: introduce helper function to safely NUL-terminate symlinks
A number of filesystems were potentially triggering kernel bugs due to corrupted symlink names on disk. This function helps safely terminate the names. Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Duane Griffin <duaneg@dghda.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--include/linux/namei.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/namei.h b/include/linux/namei.h
index 99eb80306dc5..fc2e03579877 100644
--- a/include/linux/namei.h
+++ b/include/linux/namei.h
@@ -94,4 +94,9 @@ static inline char *nd_get_link(struct nameidata *nd)
return nd->saved_names[nd->depth];
}
+static inline void nd_terminate_link(void *name, size_t len, size_t maxlen)
+{
+ ((char *) name)[min(len, maxlen)] = '\0';
+}
+
#endif /* _LINUX_NAMEI_H */