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:06:05 +0000 (12:06 -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

probes/lttng-probe-user.c

index 0d1f95fe00861aec694136b514e07523e285898d..57dd33e198a780bc341659d175cce016b2d00da8 100644 (file)
@@ -10,6 +10,8 @@
 #include <wrapper/uaccess.h>
 #include <probes/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.031978 seconds and 4 git commands to generate.