diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-05 01:51:12 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-05 01:51:12 +0200 |
| commit | fdb92359e47eee8ccd57092928cedccb28ce2f11 (patch) | |
| tree | caa1adb92b38b8af04a34c8be145b40206e232df | |
| parent | 9c49d6e11b54bd0695240119f5f28672173f6300 (diff) | |
| download | busybox-w32-fdb92359e47eee8ccd57092928cedccb28ce2f11.tar.gz busybox-w32-fdb92359e47eee8ccd57092928cedccb28ce2f11.tar.bz2 busybox-w32-fdb92359e47eee8ccd57092928cedccb28ce2f11.zip | |
pivot_root: make it NOFORK
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | NOFORK_NOEXEC.lst | 2 | ||||
| -rw-r--r-- | util-linux/pivot_root.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/NOFORK_NOEXEC.lst b/NOFORK_NOEXEC.lst index 0e1fb1f55..2fc280596 100644 --- a/NOFORK_NOEXEC.lst +++ b/NOFORK_NOEXEC.lst | |||
| @@ -261,7 +261,7 @@ pidof - nofork candidate(uses find_pid_by_name, is that ok?) | |||
| 261 | ping - suid, runner | 261 | ping - suid, runner |
| 262 | ping6 - suid, runner | 262 | ping6 - suid, runner |
| 263 | pipe_progress - longterm | 263 | pipe_progress - longterm |
| 264 | pivot_root - nofork candidate? the code is trivial | 264 | pivot_root - NOFORK |
| 265 | pkill - nofork candidate(xregcomp, procps_scan - are they ok?) | 265 | pkill - nofork candidate(xregcomp, procps_scan - are they ok?) |
| 266 | pmap - noexec candidate, leaks: open+xstrdup | 266 | pmap - noexec candidate, leaks: open+xstrdup |
| 267 | popmaildir - runner | 267 | popmaildir - runner |
diff --git a/util-linux/pivot_root.c b/util-linux/pivot_root.c index 331038057..d6a26b912 100644 --- a/util-linux/pivot_root.c +++ b/util-linux/pivot_root.c | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | //config: Note: This is for initrd in linux 2.4. Under initramfs (introduced | 21 | //config: Note: This is for initrd in linux 2.4. Under initramfs (introduced |
| 22 | //config: in linux 2.6) use switch_root instead. | 22 | //config: in linux 2.6) use switch_root instead. |
| 23 | 23 | ||
| 24 | //applet:IF_PIVOT_ROOT(APPLET(pivot_root, BB_DIR_SBIN, BB_SUID_DROP)) | 24 | //applet:IF_PIVOT_ROOT(APPLET_NOFORK(pivot_root, pivot_root, BB_DIR_SBIN, BB_SUID_DROP, pivot_root)) |
| 25 | 25 | ||
| 26 | //kbuild:lib-$(CONFIG_PIVOT_ROOT) += pivot_root.o | 26 | //kbuild:lib-$(CONFIG_PIVOT_ROOT) += pivot_root.o |
| 27 | 27 | ||
| @@ -33,7 +33,7 @@ | |||
| 33 | 33 | ||
| 34 | #include "libbb.h" | 34 | #include "libbb.h" |
| 35 | 35 | ||
| 36 | extern int pivot_root(const char * new_root,const char * put_old); | 36 | extern int pivot_root(const char *new_root, const char *put_old); |
| 37 | 37 | ||
| 38 | int pivot_root_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 38 | int pivot_root_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
| 39 | int pivot_root_main(int argc, char **argv) | 39 | int pivot_root_main(int argc, char **argv) |
| @@ -41,6 +41,8 @@ int pivot_root_main(int argc, char **argv) | |||
| 41 | if (argc != 3) | 41 | if (argc != 3) |
| 42 | bb_show_usage(); | 42 | bb_show_usage(); |
| 43 | 43 | ||
| 44 | /* NOFORK applet. Hardly matters wrt performance, but code is trivial */ | ||
| 45 | |||
| 44 | if (pivot_root(argv[1], argv[2]) < 0) { | 46 | if (pivot_root(argv[1], argv[2]) < 0) { |
| 45 | /* prints "pivot_root: <strerror text>" */ | 47 | /* prints "pivot_root: <strerror text>" */ |
| 46 | bb_perror_nomsg_and_die(); | 48 | bb_perror_nomsg_and_die(); |
