mirror of
https://github.com/systemd/systemd.git
synced 2025-02-28 05:57:33 +03:00
missing: define kernel internal limit TASK_COMM_LEN in userspace too
We already use it at two places, and we are about to add one too. Arbitrary literally hardcoded limits suck.
This commit is contained in:
parent
e225e5c3c6
commit
92f14395cd
@ -1407,4 +1407,11 @@ struct statx {
|
|||||||
#define AT_STATX_DONT_SYNC 0x4000
|
#define AT_STATX_DONT_SYNC 0x4000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* The maximum thread/process name length including trailing NUL byte. This mimics the kernel definition of the same
|
||||||
|
* name, which we need in userspace at various places but is not defined in userspace currently, neither under this
|
||||||
|
* name nor any other. */
|
||||||
|
#ifndef TASK_COMM_LEN
|
||||||
|
#define TASK_COMM_LEN 16
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "missing_syscall.h"
|
#include "missing_syscall.h"
|
||||||
|
@ -296,7 +296,7 @@ int rename_process(const char name[]) {
|
|||||||
* can use PR_SET_NAME, which sets the thread name for the calling thread. */
|
* can use PR_SET_NAME, which sets the thread name for the calling thread. */
|
||||||
if (prctl(PR_SET_NAME, name) < 0)
|
if (prctl(PR_SET_NAME, name) < 0)
|
||||||
log_debug_errno(errno, "PR_SET_NAME failed: %m");
|
log_debug_errno(errno, "PR_SET_NAME failed: %m");
|
||||||
if (l > 15) /* Linux process names can be 15 chars at max */
|
if (l >= TASK_COMM_LEN) /* Linux process names can be 15 chars at max */
|
||||||
truncated = true;
|
truncated = true;
|
||||||
|
|
||||||
/* Second step, change glibc's ID of the process name. */
|
/* Second step, change glibc's ID of the process name. */
|
||||||
|
@ -366,7 +366,7 @@ static void test_rename_process_now(const char *p, int ret) {
|
|||||||
|
|
||||||
assert_se(get_process_comm(0, &comm) >= 0);
|
assert_se(get_process_comm(0, &comm) >= 0);
|
||||||
log_info("comm = <%s>", comm);
|
log_info("comm = <%s>", comm);
|
||||||
assert_se(strneq(comm, p, 15));
|
assert_se(strneq(comm, p, TASK_COMM_LEN-1));
|
||||||
|
|
||||||
assert_se(get_process_cmdline(0, 0, false, &cmdline) >= 0);
|
assert_se(get_process_cmdline(0, 0, false, &cmdline) >= 0);
|
||||||
/* we cannot expect cmdline to be renamed properly without privileges */
|
/* we cannot expect cmdline to be renamed properly without privileges */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user