#include <pthread.h>
#include <errno.h>
+#include <string.h>
#include <lttng/ust-abi.h>
static inline
int lttng_pthread_setname_np(const char *name)
{
+ /*
+ * Some implementations don't error out, replicate this behavior for
+ * consistency.
+ */
+ if (strnlen(name, LTTNG_UST_ABI_PROCNAME_LEN) >= LTTNG_UST_ABI_PROCNAME_LEN) {
+ return ERANGE;
+ }
+
return pthread_setname_np(pthread_self(), name);
}
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;
}
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);
}