[packages/kernel] - fix possible null dereference in posix acl in various fs
lkrotowski
lkrotowski at pld-linux.org
Wed May 14 13:01:00 CEST 2014
commit 8c7ec0f236765cbdb6414f4b5384a0fc09bbfb08
Author: Łukasz Krotowski <lkrotowski at pld-linux.org>
Date: Wed May 14 12:56:48 2014 +0200
- fix possible null dereference in posix acl in various fs
kernel-small_fixes.patch | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
---
diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch
index ab5a074..556d581 100644
--- a/kernel-small_fixes.patch
+++ b/kernel-small_fixes.patch
@@ -219,3 +219,44 @@ index 4e565c8..732648b 100644
--
cgit v0.10.1
+From 50c6e282bdf5e8dabf8d7cf7b162545a55645fd9 Mon Sep 17 00:00:00 2001
+From: Christoph Hellwig <hch at lst.de>
+Date: Sun, 4 May 2014 13:03:32 +0200
+Subject: posix_acl: handle NULL ACL in posix_acl_equiv_mode
+
+Various filesystems don't bother checking for a NULL ACL in
+posix_acl_equiv_mode, and thus can dereference a NULL pointer when it
+gets passed one. This usually happens from the NFS server, as the ACL tools
+never pass a NULL ACL, but instead of one representing the mode bits.
+
+Instead of adding boilerplat to all filesystems put this check into one place,
+which will allow us to remove the check from other filesystems as well later
+on.
+
+Signed-off-by: Christoph Hellwig <hch at lst.de>
+Reported-by: Ben Greear <greearb at candelatech.com>
+Reported-by: Marco Munderloh <munderl at tnt.uni-hannover.de>,
+Cc: Chuck Lever <chuck.lever at oracle.com>
+Cc: stable at vger.kernel.org
+Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
+
+diff --git a/fs/posix_acl.c b/fs/posix_acl.c
+index 9e363e4..0855f77 100644
+--- a/fs/posix_acl.c
++++ b/fs/posix_acl.c
+@@ -246,6 +246,12 @@ posix_acl_equiv_mode(const struct posix_acl *acl, umode_t *mode_p)
+ umode_t mode = 0;
+ int not_equiv = 0;
+
++ /*
++ * A null ACL can always be presented as mode bits.
++ */
++ if (!acl)
++ return 0;
++
+ FOREACH_ACL_ENTRY(pa, acl, pe) {
+ switch (pa->e_tag) {
+ case ACL_USER_OBJ:
+--
+cgit v0.10.1
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/8c7ec0f236765cbdb6414f4b5384a0fc09bbfb08
More information about the pld-cvs-commit
mailing list