From: Michael Jeanson Date: Fri, 25 Sep 2020 15:23:58 +0000 (-0400) Subject: fix: Add a 1MB limit to lttng_strlen_user_inatomic X-Git-Tag: v2.13.0-rc1~168 X-Git-Url: http://git.liburcu.org/?p=lttng-modules.git;a=commitdiff_plain;h=eb94dcd91d4ea827ebe0353249e309f1629a5032 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 --- 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++;