diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-07 18:45:33 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-07 18:45:33 +0200 |
commit | f2cf1cc716216308a8a6d07e3afab23be07a6b02 (patch) | |
tree | 81c2a8231d59e39ab1f3cecf219616f0104fea80 /libbb/appletlib.c | |
parent | 248a67fb75a0d2c98f4f9935b7bb9e11382b2c78 (diff) | |
download | busybox-w32-f2cf1cc716216308a8a6d07e3afab23be07a6b02.tar.gz busybox-w32-f2cf1cc716216308a8a6d07e3afab23be07a6b02.tar.bz2 busybox-w32-f2cf1cc716216308a8a6d07e3afab23be07a6b02.zip |
noexec: set comm field for noexecs
function old new delta
set_task_comm - 18 +18
tryexec 152 159 +7
pseudo_exec_argv 321 328 +7
main 106 97 -9
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/2 up/down: 34/-13) Total: 23 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb/appletlib.c')
-rw-r--r-- | libbb/appletlib.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index fa28d433b..ce259446b 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c | |||
@@ -911,6 +911,14 @@ int busybox_main(int argc UNUSED_PARAM, char **argv) | |||
911 | } | 911 | } |
912 | # endif | 912 | # endif |
913 | 913 | ||
914 | #if defined(__linux__) && (NUM_APPLETS > 1) | ||
915 | void FAST_FUNC set_task_comm(const char *comm) | ||
916 | { | ||
917 | /* okay if too long (truncates) */ | ||
918 | prctl(PR_SET_NAME, (long)comm, 0, 0, 0); | ||
919 | } | ||
920 | #endif | ||
921 | |||
914 | # if NUM_APPLETS > 0 | 922 | # if NUM_APPLETS > 0 |
915 | void FAST_FUNC run_applet_no_and_exit(int applet_no, const char *name, char **argv) | 923 | void FAST_FUNC run_applet_no_and_exit(int applet_no, const char *name, char **argv) |
916 | { | 924 | { |
@@ -1064,15 +1072,14 @@ int main(int argc UNUSED_PARAM, char **argv) | |||
1064 | applet_name++; | 1072 | applet_name++; |
1065 | applet_name = bb_basename(applet_name); | 1073 | applet_name = bb_basename(applet_name); |
1066 | 1074 | ||
1067 | # if defined(__linux__) | ||
1068 | /* If we are a result of execv("/proc/self/exe"), fix ugly comm of "exe" */ | 1075 | /* If we are a result of execv("/proc/self/exe"), fix ugly comm of "exe" */ |
1069 | if (ENABLE_FEATURE_SH_STANDALONE | 1076 | if (ENABLE_FEATURE_SH_STANDALONE |
1070 | || ENABLE_FEATURE_PREFER_APPLETS | 1077 | || ENABLE_FEATURE_PREFER_APPLETS |
1071 | || !BB_MMU | 1078 | || !BB_MMU |
1072 | ) { | 1079 | ) { |
1073 | prctl(PR_SET_NAME, (long)applet_name, 0, 0, 0); | 1080 | if (NUM_APPLETS > 1) |
1081 | set_task_comm(applet_name); | ||
1074 | } | 1082 | } |
1075 | # endif | ||
1076 | 1083 | ||
1077 | parse_config_file(); /* ...maybe, if FEATURE_SUID_CONFIG */ | 1084 | parse_config_file(); /* ...maybe, if FEATURE_SUID_CONFIG */ |
1078 | run_applet_and_exit(applet_name, argv); | 1085 | run_applet_and_exit(applet_name, argv); |