Fix: use BUG_ON instead of accessing array subscript above array bounds
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 4 Apr 2016 18:39:16 +0000 (14:39 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 4 Apr 2016 20:14:25 +0000 (16:14 -0400)
commit9272c0cd5a465450edfe26a46825e568382c3fd2
tree6ed177889a678272bf3482f3117b5b4c126e028e
parent8d2c7a7c203b62bca1705870256388e2ff7a583c
Fix: use BUG_ON instead of accessing array subscript above array bounds

Building lttng-modules lttng-filter-interpreter.c on a 4.6-rc kernel
triggers the following gcc warning:

In file included from /home/compudj/git/lttng-modules/lttng-filter-interpreter.c:25:0:
/home/compudj/git/lttng-modules/lttng-filter-interpreter.c: In function ‘lttng_filter_interpret_bytecode’:
/home/compudj/git/lttng-modules/lttng-filter.h:144:14: warning: array subscript is above array bounds [-Warray-bounds]
   &(stack)->e[top];    \
              ^
/home/compudj/git/lttng-modules/lttng-filter-interpreter.c:714:4: note: in expansion of macro ‘estack_ax’
    estack_ax(stack, top)->u.s.str = insn->data;
    ^
/home/compudj/git/lttng-modules/lttng-filter.h:144:14: warning: array subscript is above array bounds [-Warray-bounds]
   &(stack)->e[top];    \
              ^
/home/compudj/git/lttng-modules/lttng-filter-interpreter.c:715:4: note: in expansion of macro ‘estack_ax’
    estack_ax(stack, top)->u.s.seq_len = UINT_MAX;

This is because the bound checking is performed in a prior validation
phase (which the compiler does not know about), and we only
WARN_ON_ONCE() if the interpreter sees values that don't fit in array
range.

Use BUG_ON() in the interpreter instead, which ensures we never, ever
reach the out-of-bound condition from a compiler perspective.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
lttng-filter.h
This page took 0.026096 seconds and 4 git commands to generate.