Messages in this thread Patch in this message | | | From | Al Viro <> | Subject | [RFC][PATCH 4/7] ftrace: switch matching to memcmp() and memmem() | Date | Thu, 5 Feb 2015 19:56:37 +0000 |
| |
From: Al Viro <viro@zeniv.linux.org.uk>
now we don't need the glob substring being matched to get NUL-terminated by filter_parse_regex()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> --- kernel/trace/ftrace.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 9f90a4f..6cb104a 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -3365,24 +3365,26 @@ ftrace_notrace_open(struct inode *inode, struct file *file) static int ftrace_match(char *str, char *regex, int len, int type) { int matched = 0; - int slen; + int slen = strlen(str); + + if (slen < len) + return 0; switch (type) { case MATCH_FULL: - if (strcmp(str, regex) == 0) + if (slen == len && memcmp(str, regex, len) == 0) matched = 1; break; case MATCH_FRONT_ONLY: - if (strncmp(str, regex, len) == 0) + if (memcmp(str, regex, len) == 0) matched = 1; break; case MATCH_MIDDLE_ONLY: - if (strstr(str, regex)) + if (memmem(str, slen, regex, len)) matched = 1; break; case MATCH_END_ONLY: - slen = strlen(str); - if (slen >= len && memcmp(str + slen - len, regex, len) == 0) + if (memcmp(str + slen - len, regex, len) == 0) matched = 1; break; } -- 2.1.4
| |