X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=NOFORK_NOEXEC.lst;h=72c33ddd76e1871b186354c80911caf1d753cbb8;hb=refs%2Fheads%2F1_28_stable;hp=063d7cd48359407cd8fd685dfee3a9ee6ea0ae84;hpb=a4d4ab04c3706af1cb2f65fb00c96d3ccba1020c;p=oweals%2Fbusybox.git diff --git a/NOFORK_NOEXEC.lst b/NOFORK_NOEXEC.lst index 063d7cd48..72c33ddd7 100644 --- a/NOFORK_NOEXEC.lst +++ b/NOFORK_NOEXEC.lst @@ -39,6 +39,14 @@ for users to keep it waiting for many minutes, whereas running "rm" in shell is very typical, and speeding up this common use via NOEXEC is useful. IOW: rm is "interactive", but not "longterm". +Interesting example of an applet which can be NOFORK but if not, +then should not be NOEXEC, is "usleep". As NOFORK, it amount to simply +nanosleep()ing in the calling program (usually shell). No memory wasted. +But if ran as NOEXEC, it would create a potentially long-term process, +which would be taking more memory because it did not exec +and did not free much of the copied memory of the parent +(COW helps with this only as long as parent doesn't modify its memory). + [ - NOFORK [[ - NOFORK @@ -136,7 +144,7 @@ flash_unlock - hardware flashcp - hardware flock - spawner, changes state (file locks), let's play safe and not be noexec fold - noexec. runner -free - noexec. nofork candidate(struct globals, needs to close /proc/meminfo fd) +free - NOFORK freeramdisk - noexec. leaks: open+ioctl_or_perror_and_die fsck - interactive, longterm fsck.minix - needs ^C @@ -158,6 +166,7 @@ hd - noexec. runner hdparm - hardware head - noexec. runner hexdump - noexec. runner +hexedit - interactive, longterm hostid - NOFORK hostname - noexec. talks to network (hostname -d may query DNS) httpd - daemon @@ -178,16 +187,16 @@ insmod - noexec install - runner ionice - noexec. spawner iostat - longterm: "iostat 1" runs indefinitely -ip - noexec candidate -ipaddr - noexec candidate +ip - noexec +ipaddr - noexec ipcalc - noexec. ipcalc -h talks to network -ipcrm - noexec candidate -ipcs - noexec candidate -iplink - noexec candidate -ipneigh - noexec candidate -iproute - noexec candidate -iprule - noexec candidate -iptunnel - noexec candidate +ipcrm - noexec +ipcs - noexec +iplink - noexec +ipneigh - noexec +iproute - noexec +iprule - noexec +iptunnel - noexec kbd_mode - noexec. leaks: xopen_nonblocking+xioctl kill - NOFORK killall - NOFORK @@ -227,6 +236,7 @@ md5sum - noexec. runner mdev - daemon mesg - NOFORK microcom - interactive, longterm +minips - noexec mkdir - NOFORK mkdosfs - needs ^C mke2fs - needs ^C @@ -256,6 +266,7 @@ nmeter - longterm nohup - noexec. spawner nproc - NOFORK ntpd - daemon +nuke - noexec od - runner openvt - longterm: spawns a child and waits for it partprobe - noexec. leaks: open+ioctl_or_perror_and_die(BLKRRPART) @@ -275,8 +286,8 @@ poweroff - rare powertop - interactive, longterm printenv - NOFORK printf - NOFORK -ps - looks for AT_CLKTCK elf aux vector, therefore can't be noexec -pscan - longterm +ps - noexec +pscan - talks to network pstree - noexec pwd - NOFORK pwdx - NOFORK @@ -292,6 +303,7 @@ remove-shell - noexec. leaks: open+xfunc renice - noexec. nofork candidate(uses getpwnam, is that ok?) reset - noexec. spawner (execs "stty") resize - noexec. changes state (signal handlers) +resume - noexec rev - runner rm - noexec. rm -i interactive rmdir - NOFORK @@ -300,6 +312,7 @@ route - talks to network (may query DNS to convert IPs to names) rpm - runner rpm2cpio - runner rtcwake - longterm: puts system to sleep, optimizing this for speed is pointless +run-init - spawner, rare, changes state (oh yes), execing may be important to free binary's inode run-parts - longterm runlevel - noexec. can be nofork if "endutxent()" is called unconditionally, but too rare to bother? runsv - daemon @@ -312,6 +325,7 @@ sendmail - runner seq - noexec. runner setarch - noexec. spawner setconsole - noexec +setfattr - noexec setfont - noexec. leaks a lot of stuff setkeycodes - noexec setlogcons - noexec @@ -327,7 +341,7 @@ showkey - interactive, longterm shred - runner shuf - noexec. runner slattach - longterm (may sleep forever), uses bb_common_bufsiz1 -sleep - runner, longterm +sleep - longterm. Could be nofork, if not the problem of "killall sleep" not killing it. smemcap - runner softlimit - noexec. spawner sort - noexec. runner @@ -397,7 +411,7 @@ unxz - runner unzip - runner uptime - noexec. nofork candidate(is getutxent ok?) users - noexec. nofork candidate(is getutxent ok?) -usleep - NOFORK +usleep - NOFORK. But what about "killall usleep"? uudecode - runner uuencode - runner vconfig - noexec. leaks: xsocket+ioctl_or_perror_and_die