expr: make it NOEXEC
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 7 Aug 2017 21:23:18 +0000 (23:23 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 7 Aug 2017 21:23:18 +0000 (23:23 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
NOFORK_NOEXEC.lst
coreutils/expr.c

index fd5306317c727f834f21cf74594820794c18f386..acbe29e6fbd65a090f1a76d4254edd41a6dfcf49 100644 (file)
@@ -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
index a2bbfdd69714e99f9da9c4233dc858937d8959ad..e54afbb62e3ff5be995e34b57ad017c75f90f456 100644 (file)
@@ -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);