Re: [PATCH][V2] net: sctp: fix array overrun read on sctp_timer_tbl

From: David Miller
Date: Fri Jan 20 2017 - 11:41:51 EST


From: Colin King <colin.king@xxxxxxxxxxxxx>
Date: Fri, 20 Jan 2017 13:45:42 +0000

> From: Colin Ian King <colin.king@xxxxxxxxxxxxx>
>
> Table sctp_timer_tbl is missing a TIMEOUT_RECONF string so
> add this in. Also compare timeout with the size of the array
> sctp_timer_tbl rather than SCTP_EVENT_TIMEOUT_MAX. Also add
> a build time check that SCTP_EVENT_TIMEOUT_MAX is correct
> so we don't ever get this kind of mismatch between the table
> and SCTP_EVENT_TIMEOUT_MAX in the future.
>
> Kudos to Marcel Ricardo Leitner for spotting the missing string
> and suggesting the build time sanity check.
>
> Fixes CoverityScan CID#1397639 ("Out-of-bounds read")
>
> Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx>

Well, my bad... I reverted V1, that's fine.

But this patch doesn't even compile.

In file included from ./include/uapi/linux/stddef.h:1:0,
from ./include/linux/stddef.h:4,
from ./include/uapi/linux/posix_types.h:4,
from ./include/uapi/linux/types.h:13,
from ./include/linux/types.h:5,
from ./include/net/sctp/sctp.h:58,
from net/sctp/debug.c:41:
net/sctp/debug.c: In function ʽsctp_tnameʼ:
./include/linux/compiler.h:518:38: error: call to ʽ__compiletime_assert_170ʼ declared with attribute error: BUILD_BUG_ON failed: SCTP_EVENT_TIMEOUT_MAX + 1 != ARRAY_SIZE(sctp_timer_tbl)
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)