diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-13 19:10:42 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-13 19:10:42 +0100 |
commit | fa3d493f7a573b4e4e2538486e912093a0161c1b (patch) | |
tree | 18c0b7273bfdf269a5f926bd3f851b5d1a0b8606 /security | |
parent | Merge tag 'apparmor-pr-2019-03-12' of git://git.kernel.org/pub/scm/linux/kern... (diff) | |
parent | security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock (diff) | |
download | linux-fa3d493f7a573b4e4e2538486e912093a0161c1b.tar.xz linux-fa3d493f7a573b4e4e2538486e912093a0161c1b.zip |
Merge tag 'selinux-pr-20190312' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux
Pull selinux fixes from Paul Moore:
"Two small fixes for SELinux in v5.1: one adds a buffer length check to
the SELinux SCTP code, the other ensures that the SELinux labeling for
a NFS mount is not disabled if the filesystem is mounted twice"
* tag 'selinux-pr-20190312' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux:
security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock
selinux: add the missing walk_size + len check in selinux_sctp_bind_connect
Diffstat (limited to 'security')
-rw-r--r-- | security/selinux/hooks.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index c5363f0c67ef..1d0b37af2444 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -939,8 +939,11 @@ static int selinux_sb_clone_mnt_opts(const struct super_block *oldsb, BUG_ON(!(oldsbsec->flags & SE_SBINITIALIZED)); /* if fs is reusing a sb, make sure that the contexts match */ - if (newsbsec->flags & SE_SBINITIALIZED) + if (newsbsec->flags & SE_SBINITIALIZED) { + if ((kern_flags & SECURITY_LSM_NATIVE_LABELS) && !set_context) + *set_kern_flags |= SECURITY_LSM_NATIVE_LABELS; return selinux_cmp_sb_context(oldsb, newsb); + } mutex_lock(&newsbsec->lock); @@ -5134,6 +5137,9 @@ static int selinux_sctp_bind_connect(struct sock *sk, int optname, return -EINVAL; } + if (walk_size + len > addrlen) + return -EINVAL; + err = -EINVAL; switch (optname) { /* Bind checks */ |