diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-08 14:09:23 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-08 14:09:23 +0200 |
| commit | ddd1ee44436c2ec7e0125ca128c9a148bea8a2c0 (patch) | |
| tree | 0f2e44e3cff4ac426b4be113c4bcb0cfe3acbebf | |
| parent | 8858a9864e1d56cfc121755d613d1292727d15f3 (diff) | |
| download | busybox-w32-ddd1ee44436c2ec7e0125ca128c9a148bea8a2c0.tar.gz busybox-w32-ddd1ee44436c2ec7e0125ca128c9a148bea8a2c0.tar.bz2 busybox-w32-ddd1ee44436c2ec7e0125ca128c9a148bea8a2c0.zip | |
libbb: simplify NOFORK/NOEXEC defines, move set_task_comm to libbb
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | libbb/appletlib.c | 16 | ||||
| -rw-r--r-- | libbb/vfork_daemon_rexec.c | 33 |
2 files changed, 24 insertions, 25 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index 5b84920a4..cbca7ef17 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c | |||
| @@ -34,14 +34,6 @@ | |||
| 34 | # include <malloc.h> /* for mallopt */ | 34 | # include <malloc.h> /* for mallopt */ |
| 35 | #endif | 35 | #endif |
| 36 | 36 | ||
| 37 | #include <sys/prctl.h> | ||
| 38 | #ifndef PR_SET_NAME | ||
| 39 | #define PR_SET_NAME 15 | ||
| 40 | #endif | ||
| 41 | #ifndef PR_GET_NAME | ||
| 42 | #define PR_GET_NAME 16 | ||
| 43 | #endif | ||
| 44 | |||
| 45 | /* Declare <applet>_main() */ | 37 | /* Declare <applet>_main() */ |
| 46 | #define PROTOTYPES | 38 | #define PROTOTYPES |
| 47 | #include "applets.h" | 39 | #include "applets.h" |
| @@ -911,14 +903,6 @@ int busybox_main(int argc UNUSED_PARAM, char **argv) | |||
| 911 | } | 903 | } |
| 912 | # endif | 904 | # endif |
| 913 | 905 | ||
| 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 | |||
| 922 | # if NUM_APPLETS > 0 | 906 | # if NUM_APPLETS > 0 |
| 923 | void FAST_FUNC run_applet_no_and_exit(int applet_no, const char *name, char **argv) | 907 | void FAST_FUNC run_applet_no_and_exit(int applet_no, const char *name, char **argv) |
| 924 | { | 908 | { |
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index c96cd61a5..e55847f93 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c | |||
| @@ -14,14 +14,32 @@ | |||
| 14 | * | 14 | * |
| 15 | * Licensed under GPLv2 or later, see file LICENSE in this source tree. | 15 | * Licensed under GPLv2 or later, see file LICENSE in this source tree. |
| 16 | */ | 16 | */ |
| 17 | #include <sys/prctl.h> | ||
| 18 | #ifndef PR_SET_NAME | ||
| 19 | #define PR_SET_NAME 15 | ||
| 20 | #endif | ||
| 21 | #ifndef PR_GET_NAME | ||
| 22 | #define PR_GET_NAME 16 | ||
| 23 | #endif | ||
| 24 | |||
| 17 | #include "busybox.h" /* uses applet tables */ | 25 | #include "busybox.h" /* uses applet tables */ |
| 18 | #include "NUM_APPLETS.h" | 26 | #include "NUM_APPLETS.h" |
| 19 | 27 | ||
| 28 | #define NOFORK_SUPPORT ((NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_NOFORK)) | ||
| 29 | #define NOEXEC_SUPPORT ((NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_STANDALONE)) | ||
| 30 | |||
| 31 | #if defined(__linux__) && (NUM_APPLETS > 1) | ||
| 32 | void FAST_FUNC set_task_comm(const char *comm) | ||
| 33 | { | ||
| 34 | /* okay if too long (truncates) */ | ||
| 35 | prctl(PR_SET_NAME, (long)comm, 0, 0, 0); | ||
| 36 | } | ||
| 37 | #endif | ||
| 38 | |||
| 20 | /* | 39 | /* |
| 21 | * NOFORK support | 40 | * NOFORK/NOEXEC support |
| 22 | */ | 41 | */ |
| 23 | #if ENABLE_FEATURE_PREFER_APPLETS \ | 42 | #if NOFORK_SUPPORT |
| 24 | || ENABLE_FEATURE_SH_NOFORK | ||
| 25 | static jmp_buf die_jmp; | 43 | static jmp_buf die_jmp; |
| 26 | static void jump(void) | 44 | static void jump(void) |
| 27 | { | 45 | { |
| @@ -109,12 +127,9 @@ int FAST_FUNC run_nofork_applet(int applet_no, char **argv) | |||
| 109 | 127 | ||
| 110 | return rc & 0xff; /* don't confuse people with "exitcodes" >255 */ | 128 | return rc & 0xff; /* don't confuse people with "exitcodes" >255 */ |
| 111 | } | 129 | } |
| 112 | #endif /* FEATURE_PREFER_APPLETS || FEATURE_SH_NOFORK */ | 130 | #endif |
| 113 | 131 | ||
| 114 | /* | 132 | #if NOEXEC_SUPPORT |
| 115 | * NOEXEC support | ||
| 116 | */ | ||
| 117 | #if (NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_STANDALONE) | ||
| 118 | void FAST_FUNC run_noexec_applet_and_exit(int a, const char *name, char **argv) | 133 | void FAST_FUNC run_noexec_applet_and_exit(int a, const char *name, char **argv) |
| 119 | { | 134 | { |
| 120 | /* reset some state and run without execing */ | 135 | /* reset some state and run without execing */ |
| @@ -212,7 +227,7 @@ int FAST_FUNC spawn_and_wait(char **argv) | |||
| 212 | } | 227 | } |
| 213 | # endif | 228 | # endif |
| 214 | } | 229 | } |
| 215 | #endif /* FEATURE_PREFER_APPLETS */ | 230 | #endif |
| 216 | rc = spawn(argv); | 231 | rc = spawn(argv); |
| 217 | return wait4pid(rc); | 232 | return wait4pid(rc); |
| 218 | } | 233 | } |
