tracing/probe: Check event name length correctly
authorMasami Hiramatsu <mhiramat@kernel.org>
Thu, 14 Mar 2019 04:30:20 +0000 (13:30 +0900)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Thu, 14 Mar 2019 23:53:47 +0000 (19:53 -0400)
Ensure given name of event is not too long when parsing it,
and fix to update event name offset correctly when the group
name is given. For example, this makes probe event to check
the "p:foo/" error case correctly.

Link: http://lkml.kernel.org/r/155253782046.14922.14724124823730168629.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace_probe.c

index cfcf77e6fb197c97b5ee9c92cb4ed1fd4984acdc..0dc13bff2847581b87f0c59b3aa7ee133914f5d5 100644 (file)
@@ -159,6 +159,7 @@ int traceprobe_parse_event_name(const char **pevent, const char **pgroup,
                                char *buf)
 {
        const char *slash, *event = *pevent;
+       int len;
 
        slash = strchr(event, '/');
        if (slash) {
@@ -173,10 +174,15 @@ int traceprobe_parse_event_name(const char **pevent, const char **pgroup,
                strlcpy(buf, event, slash - event + 1);
                *pgroup = buf;
                *pevent = slash + 1;
+               event = *pevent;
        }
-       if (strlen(event) == 0) {
+       len = strlen(event);
+       if (len == 0) {
                pr_info("Event name is not specified\n");
                return -EINVAL;
+       } else if (len > MAX_EVENT_NAME_LEN) {
+               pr_info("Event name is too long\n");
+               return -E2BIG;
        }
        return 0;
 }