From eb94dcd91d4ea827ebe0353249e309f1629a5032 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Fri, 25 Sep 2020 11:23:58 -0400 Subject: [PATCH] fix: Add a 1MB limit to lttng_strlen_user_inatomic The previous implementation was unbounded which could result in long loops with preemption turned off. Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers Change-Id: I85afcd879258735bb2e7502f6016fcb2d3974cf7 --- src/probes/lttng-probe-user.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/probes/lttng-probe-user.c b/src/probes/lttng-probe-user.c index 009cfed0..592d948b 100644 --- a/src/probes/lttng-probe-user.c +++ b/src/probes/lttng-probe-user.c @@ -10,6 +10,8 @@ #include #include +#define LTTNG_MAX_USER_STRING_LEN 1048576 /* 1MB */ + /* * Calculate string length. Include final null terminating character if there is * one, or ends at first fault. Disabling page faults ensures that we can safely @@ -41,6 +43,8 @@ long lttng_strlen_user_inatomic(const char *addr) if (unlikely(ret > 0)) break; count++; + if (unlikely(count > LTTNG_MAX_USER_STRING_LEN)) + break; if (unlikely(!v)) break; addr++; -- 2.34.1