fix: pthread_setname_np fails on longer tread names
[lttng-ust.git] / liblttng-ust / compat.h
index 69761880e125fbff0504320697c22203180b7d97..a941b9a1ed407a945ecef8d624ed2b98f9f5387a 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <pthread.h>
 #include <errno.h>
+#include <string.h>
 
 #include <lttng/ust-abi.h>
 
@@ -59,6 +60,11 @@ int lttng_pthread_getname_np(char *name, size_t len)
 static inline
 int lttng_pthread_setname_np(const char *name)
 {
+       /* Replicate pthread_setname_np's behavior */
+       if (strnlen(name, LTTNG_UST_ABI_PROCNAME_LEN) >= LTTNG_UST_ABI_PROCNAME_LEN) {
+               return ERANGE;
+       }
+
        pthread_set_name_np(pthread_self(), name);
        return 0;
 }
@@ -77,6 +83,10 @@ int lttng_pthread_getname_np(char *name, size_t len)
 static inline
 int lttng_pthread_setname_np(const char *name)
 {
+       /* Replicate pthread_setname_np's behavior */
+       if (strnlen(name, LTTNG_UST_ABI_PROCNAME_LEN) >= LTTNG_UST_ABI_PROCNAME_LEN) {
+               return ERANGE;
+       }
        return prctl(PR_SET_NAME, name, 0, 0, 0);
 }
 
This page took 0.02422 seconds and 4 git commands to generate.