libbb: simplify NOFORK/NOEXEC defines, move set_task_comm to libbb
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		@@ -34,14 +34,6 @@
 | 
			
		||||
# include <malloc.h> /* for mallopt */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <sys/prctl.h>
 | 
			
		||||
#ifndef PR_SET_NAME
 | 
			
		||||
#define PR_SET_NAME 15
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef PR_GET_NAME
 | 
			
		||||
#define PR_GET_NAME 16
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Declare <applet>_main() */
 | 
			
		||||
#define PROTOTYPES
 | 
			
		||||
#include "applets.h"
 | 
			
		||||
@@ -911,14 +903,6 @@ int busybox_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
}
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
#if defined(__linux__) && (NUM_APPLETS > 1)
 | 
			
		||||
void FAST_FUNC set_task_comm(const char *comm)
 | 
			
		||||
{
 | 
			
		||||
	/* okay if too long (truncates) */
 | 
			
		||||
	prctl(PR_SET_NAME, (long)comm, 0, 0, 0);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
# if NUM_APPLETS > 0
 | 
			
		||||
void FAST_FUNC run_applet_no_and_exit(int applet_no, const char *name, char **argv)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -14,14 +14,32 @@
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
 | 
			
		||||
 */
 | 
			
		||||
#include <sys/prctl.h>
 | 
			
		||||
#ifndef PR_SET_NAME
 | 
			
		||||
#define PR_SET_NAME 15
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef PR_GET_NAME
 | 
			
		||||
#define PR_GET_NAME 16
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "busybox.h" /* uses applet tables */
 | 
			
		||||
#include "NUM_APPLETS.h"
 | 
			
		||||
 | 
			
		||||
#define NOFORK_SUPPORT ((NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_NOFORK))
 | 
			
		||||
#define NOEXEC_SUPPORT ((NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_STANDALONE))
 | 
			
		||||
 | 
			
		||||
#if defined(__linux__) && (NUM_APPLETS > 1)
 | 
			
		||||
void FAST_FUNC set_task_comm(const char *comm)
 | 
			
		||||
{
 | 
			
		||||
	/* okay if too long (truncates) */
 | 
			
		||||
	prctl(PR_SET_NAME, (long)comm, 0, 0, 0);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * NOFORK support
 | 
			
		||||
 * NOFORK/NOEXEC support
 | 
			
		||||
 */
 | 
			
		||||
#if ENABLE_FEATURE_PREFER_APPLETS \
 | 
			
		||||
 || ENABLE_FEATURE_SH_NOFORK
 | 
			
		||||
#if NOFORK_SUPPORT
 | 
			
		||||
static jmp_buf die_jmp;
 | 
			
		||||
static void jump(void)
 | 
			
		||||
{
 | 
			
		||||
@@ -109,12 +127,9 @@ int FAST_FUNC run_nofork_applet(int applet_no, char **argv)
 | 
			
		||||
 | 
			
		||||
	return rc & 0xff; /* don't confuse people with "exitcodes" >255 */
 | 
			
		||||
}
 | 
			
		||||
#endif /* FEATURE_PREFER_APPLETS || FEATURE_SH_NOFORK */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * NOEXEC support
 | 
			
		||||
 */
 | 
			
		||||
#if (NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_STANDALONE)
 | 
			
		||||
#if NOEXEC_SUPPORT
 | 
			
		||||
void FAST_FUNC run_noexec_applet_and_exit(int a, const char *name, char **argv)
 | 
			
		||||
{
 | 
			
		||||
	/* reset some state and run without execing */
 | 
			
		||||
@@ -212,7 +227,7 @@ int FAST_FUNC spawn_and_wait(char **argv)
 | 
			
		||||
		}
 | 
			
		||||
# endif
 | 
			
		||||
	}
 | 
			
		||||
#endif /* FEATURE_PREFER_APPLETS */
 | 
			
		||||
#endif
 | 
			
		||||
	rc = spawn(argv);
 | 
			
		||||
	return wait4pid(rc);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user