diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-07 23:23:18 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-07 23:23:18 +0200 |
commit | af5d0086694b9c9b7cbf896e49e1997ec7039904 (patch) | |
tree | 88e96ff8e145a57ca585decd0bd6c0bd0f0adabf | |
parent | ec98e3a628b06f6cb8823e5197dcd413113d7ed6 (diff) | |
download | busybox-af5d0086694b9c9b7cbf896e49e1997ec7039904.tar.gz |
expr: make it NOEXEC
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | NOFORK_NOEXEC.lst | 4 | ||||
-rw-r--r-- | coreutils/expr.c | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/NOFORK_NOEXEC.lst b/NOFORK_NOEXEC.lst index fd5306317..acbe29e6f 100644 --- a/NOFORK_NOEXEC.lst +++ b/NOFORK_NOEXEC.lst @@ -108,12 +108,12 @@ dumpleases - leaks: open+xread echo - NOFORK ed - interactive, longterm egrep - longterm runner ("CMD | egrep ..." may run indefinitely, better to exec to conserve memory) -eject - leaks: open+ioctl_or_perror_and_die, changes state (moves fds) +eject - hardware, leaks: open+ioctl_or_perror_and_die, changes state (moves fds) env - noexec. spawner, changes state (env) envdir - noexec. spawner envuidgid - noexec. spawner expand - runner -expr - leaks: nested allocs +expr - noexec. leaks: nested allocs factor - runner (eats stdin if no params) fakeidentd - daemon false - NOFORK diff --git a/coreutils/expr.c b/coreutils/expr.c index a2bbfdd69..e54afbb62 100644 --- a/coreutils/expr.c +++ b/coreutils/expr.c @@ -38,7 +38,7 @@ //config: the applet slightly larger, but will allow computation with very //config: large numbers. -//applet:IF_EXPR(APPLET(expr, BB_DIR_USR_BIN, BB_SUID_DROP)) +//applet:IF_EXPR(APPLET_NOEXEC(expr, expr, BB_DIR_USR_BIN, BB_SUID_DROP, expr)) //kbuild:lib-$(CONFIG_EXPR) += expr.o @@ -118,7 +118,10 @@ struct globals { char **args; } FIX_ALIASING; #define G (*(struct globals*)bb_common_bufsiz1) -#define INIT_G() do { setup_common_bufsiz(); } while (0) +#define INIT_G() do { \ + setup_common_bufsiz(); \ + /* NB: noexec applet - globals not zeroed */ \ +} while (0) /* forward declarations */ static VALUE *eval(void); |