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
This commit is contained in:
Denis Vlasenko
2008-07-06 07:00:11 +00:00
parent ff182a3d68
commit d48e81f0cd
3 changed files with 21 additions and 20 deletions

View File

@ -265,7 +265,14 @@ void FAST_FUNC bb_daemonize_or_rexec(int flags, char **argv)
close(2);
}
fd = xopen(bb_dev_null, O_RDWR);
fd = open(bb_dev_null, O_RDWR);
if (fd < 0) {
/* NB: we can be called as bb_sanitize_stdio() from init
* or mdev, and there /dev/null may legitimately not (yet) exist!
* Do not use xopen above, but obtain _ANY_ open descriptor,
* even bogus one as below. */
fd = xopen("/", O_RDONLY); /* don't believe this can fail */
}
while ((unsigned)fd < 2)
fd = dup(fd); /* have 0,1,2 open at least to /dev/null */