diff options
Diffstat (limited to 'libbb/vfork_daemon_rexec.c')
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index 885c19f1a..151739ae2 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c | |||
@@ -28,6 +28,22 @@ | |||
28 | # ifndef PR_GET_NAME | 28 | # ifndef PR_GET_NAME |
29 | # define PR_GET_NAME 16 | 29 | # define PR_GET_NAME 16 |
30 | # endif | 30 | # endif |
31 | # if ENABLE_FEATURE_SH_STANDALONE || ENABLE_FEATURE_PREFER_APPLETS || !BB_MMU | ||
32 | int FAST_FUNC re_execed_comm(void) | ||
33 | { | ||
34 | const char *e, *expected_comm; | ||
35 | char comm[16]; | ||
36 | |||
37 | BUILD_BUG_ON(CONFIG_BUSYBOX_EXEC_PATH[0] != '/'); | ||
38 | e = CONFIG_BUSYBOX_EXEC_PATH; | ||
39 | /* Hopefully (strrchr(e) - e) evaluates to constant at compile time: */ | ||
40 | expected_comm = bb_busybox_exec_path + (strrchr(e, '/') - e) + 1; | ||
41 | |||
42 | prctl(PR_GET_NAME, (long)comm, 0, 0, 0); | ||
43 | //bb_error_msg("comm:'%.*s' expected:'%s'", 16, comm, expected_comm); | ||
44 | return strcmp(comm, expected_comm) == 0; | ||
45 | } | ||
46 | # endif | ||
31 | void FAST_FUNC set_task_comm(const char *comm) | 47 | void FAST_FUNC set_task_comm(const char *comm) |
32 | { | 48 | { |
33 | /* okay if too long (truncates) */ | 49 | /* okay if too long (truncates) */ |