fix: Add a 1MB limit to lttng_strlen_user_inatomic
authorMichael Jeanson <mjeanson@efficios.com>
Fri, 25 Sep 2020 15:23:58 +0000 (11:23 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 30 Sep 2020 16:01:55 +0000 (12:01 -0400)
The previous implementation was unbounded which could result in long
loops with preemption turned off.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I85afcd879258735bb2e7502f6016fcb2d3974cf7

src/probes/lttng-probe-user.c

index 009cfed004c65d124229301365df8582f896db53..592d948b1498e66f570ae8cc2a9e6906304a1750 100644 (file)
@@ -10,6 +10,8 @@
 #include <wrapper/uaccess.h>
 #include <lttng/probe-user.h>
 
+#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++;
This page took 0.026909 seconds and 4 git commands to generate.