Messages in this thread | | | Date | Thu, 21 Feb 2013 00:56:08 +0900 | From | Satoru Takeuchi <> | Subject | Re: [ 1/1] printk: fix buffer overflow when calling log_prefix function from call_console_drivers |
| |
At Wed, 20 Feb 2013 14:43:09 +0100, Alexandre SIMON wrote: > > [Satoru Takeuchi] wrote the following on [20/02/2013 14:02]: > [...] > > > > I reviewed this patch and it seems to be good for me. Since I'm not good at > > printk code, I want to confirm whether what I think is correct or not. > > Is the following my understanding correct? > > No problem, it's nice to talk about this patch ! ... > > In this case, only LOG_BUF(cur_index) is safe to access and > > > > - "LOG_BUF(cur_index) + 1" as p[1], > > - "LOG_BUF(cur_index) + 2" as p[2], and > > - "LOG_BUF(cur_index) + 1 or more" as simple_strtoul(&p[1], &endp, 10) > > > > in log_prefix() are not to do so. Hence touching them would cause the system hang as you > > said as follows. > > Yes, your analyze is totally right. Your figure is clear and shows exactly when the problem occurs in the "borderline case". > The initial code does not check that the "cur_index" can be at the end of "log_buf" whereas "log_prefix" function may access to one, two or more indexes after.
Alex, thank you for quick response and the detailed explanation. Greg, then I can say this patch looks correct and 3.0.66-rc1 version is too.
Thanks, Satoru
| |