[PATCH v5 1/9] dt_lex: support '/' in probe descriptors
Alan Maguire <[email protected]> Wed, 4 Mar 2026 08:01:17 +0000
| Newsgroups | dev.linux.lists.dtrace |
|---|---|
| Message-ID | <[email protected]> |
This will allow us to support paths in module descriptions. Add '/' to regexp, but then constrain usage to probe module. Signed-off-by: Alan Maguire <[email protected]> --- libdtrace/dt_lex.l | 2 +- libdtrace/dt_subr.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libdtrace/dt_lex.l b/libdtrace/dt_lex.l index fd70aa0a..a8268c44 100644 --- a/libdtrace/dt_lex.l +++ b/libdtrace/dt_lex.l @@ -48,7 +48,7 @@ static size_t dt_input(char *buf, size_t max_size); %s S0 S1 S2 S3 S4 S5 SIDENT RGX_AGG "@"[a-zA-Z_][0-9a-zA-Z_]* -RGX_PSPEC [-$:a-zA-Z_.?*\\\[\]!][-$:0-9a-zA-Z_.`?*\\\[\]!]* +RGX_PSPEC [-$:a-zA-Z_.?*\\\[\]!][-$:0-9a-zA-Z_.`/?*\\\[\]!]* RGX_IDENT ([a-zA-Z_`][0-9a-zA-Z_`]*)|([0-9][0-9a-zA-Z_]*`[0-9a-zA-Z_`]*) RGX_INT ([0-9]+|0[xX][0-9A-Fa-f]+)[uU]?[lL]?[lL]? RGX_FP ([0-9]+("."?)[0-9]*|"."[0-9]+)((e|E)("+"|-)?[0-9]+)?[fFlL]? diff --git a/libdtrace/dt_subr.c b/libdtrace/dt_subr.c index 6d06c2b5..73db5939 100644 --- a/libdtrace/dt_subr.c +++ b/libdtrace/dt_subr.c @@ -119,6 +119,12 @@ dtrace_xstr2desc(dtrace_hdl_t *dtp, dtrace_probespec_t spec, const char *s, memcpy(name + len, v, vlen); memcpy(name + len + vlen, w, wlen); + /* Only allow '/' in probemod */ + if (strchr(name, '/') != NULL && spec != DTRACE_PROBESPEC_MOD) { + free(name); + return dt_set_errno(dtp, EDT_BADPROBE); + } + switch (spec) { case DTRACE_PROBESPEC_PROVIDER: pdp->prv = name; -- 2.43.5