diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-06 07:00:11 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-06 07:00:11 +0000 |
commit | d48e81f0cda73aca49cd852212a62e879cf35b86 (patch) | |
tree | bc7f639f139f1fe5d65dd20b5819d41a5acf2cea /util-linux/mdev.c | |
parent | ff182a3d68462cb7ec38affa1afb04a06031862f (diff) | |
download | busybox-w32-d48e81f0cda73aca49cd852212a62e879cf35b86.tar.gz busybox-w32-d48e81f0cda73aca49cd852212a62e879cf35b86.tar.bz2 busybox-w32-d48e81f0cda73aca49cd852212a62e879cf35b86.zip |
mdev: do not follow symlinks in /sys (as was intended prior to rev 18811).
If this breaks things, please document why!
mdev,init: use shared code for fd sanitization
function old new delta
bb_daemonize_or_rexec 155 172 +17
mdev_main 500 505 +5
init_main 907 856 -51
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 22/-51) Total: -29 bytes
Diffstat (limited to 'util-linux/mdev.c')
-rw-r--r-- | util-linux/mdev.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/util-linux/mdev.c b/util-linux/mdev.c index c7109373d..9c4938a70 100644 --- a/util-linux/mdev.c +++ b/util-linux/mdev.c | |||
@@ -19,7 +19,8 @@ struct globals { | |||
19 | #define root_major (G.root_major) | 19 | #define root_major (G.root_major) |
20 | #define root_minor (G.root_minor) | 20 | #define root_minor (G.root_minor) |
21 | 21 | ||
22 | #define MAX_SYSFS_DEPTH 3 /* prevent infinite loops in /sys symlinks */ | 22 | /* Prevent infinite loops in /sys symlinks */ |
23 | #define MAX_SYSFS_DEPTH 3 | ||
23 | 24 | ||
24 | /* We use additional 64+ bytes in make_device() */ | 25 | /* We use additional 64+ bytes in make_device() */ |
25 | #define SCRATCH_SIZE 80 | 26 | #define SCRATCH_SIZE 80 |
@@ -392,11 +393,17 @@ int mdev_main(int argc, char **argv) | |||
392 | char *env_path; | 393 | char *env_path; |
393 | RESERVE_CONFIG_BUFFER(temp, PATH_MAX + SCRATCH_SIZE); | 394 | RESERVE_CONFIG_BUFFER(temp, PATH_MAX + SCRATCH_SIZE); |
394 | 395 | ||
395 | #ifdef YOU_WANT_TO_DEBUG_HOTPLUG_EVENTS | 396 | /* We can be called as hotplug helper */ |
396 | /* Kernel cannot provide suitable stdio fds for us, do it ourself */ | 397 | /* Kernel cannot provide suitable stdio fds for us, do it ourself */ |
398 | #if 1 | ||
399 | bb_sanitize_stdio(); | ||
400 | #else | ||
401 | /* Debug code */ | ||
397 | /* Replace LOGFILE by other file or device name if you need */ | 402 | /* Replace LOGFILE by other file or device name if you need */ |
398 | #define LOGFILE "/dev/console" | 403 | #define LOGFILE "/dev/console" |
399 | xmove_fd(xopen("/dev/null", O_RDONLY), STDIN_FILENO); | 404 | /* Just making sure fd 0 is not closed, |
405 | * we don't really intend to read from it */ | ||
406 | xmove_fd(xopen("/", O_RDONLY), STDIN_FILENO); | ||
400 | xmove_fd(xopen(LOGFILE, O_WRONLY|O_APPEND), STDOUT_FILENO); | 407 | xmove_fd(xopen(LOGFILE, O_WRONLY|O_APPEND), STDOUT_FILENO); |
401 | xmove_fd(xopen(LOGFILE, O_WRONLY|O_APPEND), STDERR_FILENO); | 408 | xmove_fd(xopen(LOGFILE, O_WRONLY|O_APPEND), STDERR_FILENO); |
402 | #endif | 409 | #endif |
@@ -414,11 +421,11 @@ int mdev_main(int argc, char **argv) | |||
414 | root_minor = minor(st.st_dev); | 421 | root_minor = minor(st.st_dev); |
415 | 422 | ||
416 | recursive_action("/sys/block", | 423 | recursive_action("/sys/block", |
417 | ACTION_RECURSE | ACTION_FOLLOWLINKS, | 424 | ACTION_RECURSE /* no ACTION_FOLLOWLINKS! */, |
418 | fileAction, dirAction, temp, 0); | 425 | fileAction, dirAction, temp, 0); |
419 | 426 | ||
420 | recursive_action("/sys/class", | 427 | recursive_action("/sys/class", |
421 | ACTION_RECURSE | ACTION_FOLLOWLINKS, | 428 | ACTION_RECURSE /* no ACTION_FOLLOWLINKS! */, |
422 | fileAction, dirAction, temp, 0); | 429 | fileAction, dirAction, temp, 0); |
423 | 430 | ||
424 | } else { | 431 | } else { |