lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 28 Jun 2011 01:09:45 -0600 From: Jim Cromie <jim.cromie@...il.com> To: linux-kernel@...r.kernel.org Cc: gnb@...h.org, jbaron@...hat.com, bvanassche@....org, gregkh@...e.de, Jim Cromie <jim.cromie@...il.com> Subject: [PATCH 04/11] dynamic_debug: warn when >1 of each type of match-spec is given Issue warnings when any match-spec is given multiple times in a rule. Code honoredi last one, but was silent about it. Docs imply only one is allowed, by saying match-specs are ANDed together, given that module M cannot match both A and B. Signed-off-by: Jim Cromie <jim.cromie@...il.com> --- lib/dynamic_debug.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 0e567ad..2505232 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -284,6 +284,14 @@ static char *unescape(char *str) return str; } +static inline void check_set(const char **dest, char *src, char *name) +{ + if (*dest) + pr_warning("match-spec:%s val:%s overridden by %s", + name, *dest, src); + *dest = src; +} + /* * Parse words[] as a ddebug query specification, which is a series * of (keyword, value) pairs chosen from these possibilities: @@ -295,6 +303,9 @@ static char *unescape(char *str) * format <escaped-string-to-find-in-format> * line <lineno> * line <first-lineno>-<last-lineno> // where either may be empty + * + * only 1 pair of each type is expected, subsequent ones elicit a + * warning, and override the setting. */ static int ddebug_parse_query(char *words[], int nwords, struct ddebug_query *query) @@ -308,13 +319,13 @@ static int ddebug_parse_query(char *words[], int nwords, for (i = 0 ; i < nwords ; i += 2) { if (!strcmp(words[i], "func")) - query->function = words[i+1]; + check_set(&query->function, words[i+1], "func"); else if (!strcmp(words[i], "file")) - query->filename = words[i+1]; + check_set(&query->filename, words[i+1], "file"); else if (!strcmp(words[i], "module")) - query->module = words[i+1]; + check_set(&query->module, words[i+1], "module"); else if (!strcmp(words[i], "format")) - query->format = unescape(words[i+1]); + check_set(&query->format, words[i+1], "format"); else if (!strcmp(words[i], "line")) { char *first = words[i+1]; char *last = strchr(first, '-'); -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists