fix: Add a 1MB limit to lttng_strlen_user_inatomic
[lttng-modules.git] / probes / lttng-probe-user.c
index 4162a7e42d2d94942fa4d5927afff8f95660d807..57dd33e198a780bc341659d175cce016b2d00da8 100644 (file)
@@ -7,8 +7,11 @@
 
 #include <linux/uaccess.h>
 #include <linux/module.h>
+#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
@@ -30,7 +33,7 @@ long lttng_strlen_user_inatomic(const char *addr)
                char v;
                unsigned long ret;
 
-               if (unlikely(!access_ok(VERIFY_READ,
+               if (unlikely(!lttng_access_ok(VERIFY_READ,
                                (__force const char __user *) addr,
                                sizeof(v))))
                        break;
@@ -40,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.023101 seconds and 4 git commands to generate.