diff options
author | Ondrej Mosnacek <omosnace@redhat.com> | 2018-11-13 16:16:08 +0100 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2018-11-13 11:39:09 -0500 |
commit | c138325fb8713472d5a0c3c7258b9131bab40725 (patch) | |
tree | 5fff0dba37bdb9694deb285143726b55c0074b71 /security | |
parent | 4458bba09788e70e8fb39ad003f087cd9dfbd6ac (diff) | |
download | linux-stable-c138325fb8713472d5a0c3c7258b9131bab40725.tar.gz linux-stable-c138325fb8713472d5a0c3c7258b9131bab40725.tar.bz2 linux-stable-c138325fb8713472d5a0c3c7258b9131bab40725.zip |
selinux: check length properly in SCTP bind hook
selinux_sctp_bind_connect() must verify if the address buffer has
sufficient length before accessing the 'sa_family' field. See
__sctp_connect() for a similar check.
The length of the whole address ('len') is already checked in the
callees.
Reported-by: Qian Cai <cai@gmx.us>
Fixes: d452930fd3b9 ("selinux: Add SCTP support")
Cc: <stable@vger.kernel.org> # 4.17+
Cc: Richard Haines <richard_c_haines@btinternet.com>
Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
Tested-by: Qian Cai <cai@gmx.us>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'security')
-rw-r--r-- | security/selinux/hooks.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 18b98b5e1e3c..fe251c6f09f1 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -5318,6 +5318,9 @@ static int selinux_sctp_bind_connect(struct sock *sk, int optname, addr_buf = address; while (walk_size < addrlen) { + if (walk_size + sizeof(sa_family_t) > addrlen) + return -EINVAL; + addr = addr_buf; switch (addr->sa_family) { case AF_UNSPEC: |