tracing: Add paranoid size check in trace_printk_seq()
To be really paranoid about writing out of bound data in trace_printk_seq(), add another check of len compared to size. Link: http://lkml.kernel.org/r/20141119144004.GB2332@dhcp128.suse.cz Suggested-by: Petr Mladek <pmladek@suse.cz> Reviewed-by: Petr Mladek <pmladek@suse.cz> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
Родитель
5ac4837841
Коммит
820b75f63d
|
@ -6656,6 +6656,14 @@ trace_printk_seq(struct trace_seq *s)
|
||||||
if (s->seq.len >= TRACE_MAX_PRINT)
|
if (s->seq.len >= TRACE_MAX_PRINT)
|
||||||
s->seq.len = TRACE_MAX_PRINT;
|
s->seq.len = TRACE_MAX_PRINT;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* More paranoid code. Although the buffer size is set to
|
||||||
|
* PAGE_SIZE, and TRACE_MAX_PRINT is 1000, this is just
|
||||||
|
* an extra layer of protection.
|
||||||
|
*/
|
||||||
|
if (WARN_ON_ONCE(s->seq.len >= s->seq.size))
|
||||||
|
s->seq.len = s->seq.size - 1;
|
||||||
|
|
||||||
/* should be zero ended, but we are paranoid. */
|
/* should be zero ended, but we are paranoid. */
|
||||||
s->buffer[s->seq.len] = 0;
|
s->buffer[s->seq.len] = 0;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче