]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- fix possible null dereference in posix acl in various fs
authorŁukasz Krotowski <lkrotowski@pld-linux.org>
Wed, 14 May 2014 10:56:48 +0000 (12:56 +0200)
committerŁukasz Krotowski <lkrotowski@pld-linux.org>
Wed, 14 May 2014 10:58:26 +0000 (12:58 +0200)
kernel-small_fixes.patch

index ab5a074bde8d3e7ba5e1aceef3383925f3ef3991..556d581b2e143f3c20be679351217d203005ff91 100644 (file)
@@ -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@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@lst.de>
+Reported-by: Ben Greear <greearb@candelatech.com>
+Reported-by: Marco Munderloh <munderl@tnt.uni-hannover.de>,
+Cc: Chuck Lever <chuck.lever@oracle.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Al Viro <viro@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
+
This page took 0.798492 seconds and 4 git commands to generate.