Messages in this thread | | | Date | Thu, 15 Mar 2018 16:58:42 +0900 | From | Sergey Senozhatsky <> | Subject | Re: [PATCH v3] vsprintf: Prevent crash when dereferencing invalid pointers |
| |
On (03/14/18 15:09), Petr Mladek wrote: [..] > +static const char *check_pointer_access(const void *ptr) > +{ > + unsigned char byte; > + > + if (!ptr) > + return "(null)"; > + > + if (probe_kernel_read(&byte, ptr, 1)) ^^^^^ Why one byte? sizeof(ptr)?
[..] > char *pointer(const char *fmt, char *buf, char *end, void *ptr, > struct printf_spec spec) > { > + static const char data_access_fmt[] = "RrhbMmIiEUVNadCDgGO"; > const int default_width = 2 * sizeof(void *); > + const char *err_msg = NULL; > + > + /* Prevent silent crash when this is called under logbuf_lock. */ > + if (*fmt && strchr(data_access_fmt, *fmt) != NULL) > + err_msg = check_pointer_access(ptr);
Agree with Rasmus, I think switch() is easier.
-ss
| |