From 585eeea3522ce2225a1df94fcc0b8aec2d881b44 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Fri, 21 Oct 2022 15:37:03 +0800 Subject: [PATCH 187/189] telemetry: limit command characters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Limit the telemetry command characters to the minimum set needed for current implementations. This prevents issues with invalid json characters needing to be escaped on replies. Signed-off-by: Bruce Richardson Acked-by: Ciara Power Acked-by: Morten Brørup Acked-by: Chengwen Feng --- lib/telemetry/telemetry.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c index d4a7838ded..f0be50b2bf 100644 --- a/lib/telemetry/telemetry.c +++ b/lib/telemetry/telemetry.c @@ -3,6 +3,7 @@ */ #ifndef RTE_EXEC_ENV_WINDOWS +#include #include #include #include @@ -71,12 +72,19 @@ int rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help) { struct cmd_callback *new_callbacks; + const char *cmdp = cmd; int i = 0; if (strlen(cmd) >= MAX_CMD_LEN || fn == NULL || cmd[0] != '/' || strlen(help) >= RTE_TEL_MAX_STRING_LEN) return -EINVAL; + while (*cmdp != '\0') { + if (!isalnum(*cmdp) && *cmdp != '_' && *cmdp != '/') + return -EINVAL; + cmdp++; + } + rte_spinlock_lock(&callback_sl); new_callbacks = realloc(callbacks, sizeof(callbacks[0]) * (num_callbacks + 1)); if (new_callbacks == NULL) { -- 2.23.0