diff options
author | Rob Landley <rob@landley.net> | 2013-12-23 06:49:38 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2013-12-23 06:49:38 -0600 |
commit | afba5b8efdf1bac2c02ca787840a2be053c800f7 (patch) | |
tree | 1af5b850e90663fb3be71597d02cd525bf5be4e8 /main.c | |
parent | 5a73f3992d75dd4c7beefae2fa8a843d14372b19 (diff) | |
download | toybox-afba5b8efdf1bac2c02ca787840a2be053c800f7.tar.gz toybox-afba5b8efdf1bac2c02ca787840a2be053c800f7.tar.bz2 toybox-afba5b8efdf1bac2c02ca787840a2be053c800f7.zip |
Fix some issues raised (albeit indirectly) by Isaac Dunham.
POLL_IN defined as a constant by some libc.
Factor out login.c's change_identity() to xwrap.c as xsetuser().
Replace xsetuid() with xsetuser()
Put a space between argument globals and non-argument globals.
TT starts zeroed, don't need to re-zero entries in it.
STDIN_FILENO has been 0 since 1969, even DOS copied that. Just say 0.
Added an xchroot() using xchdir() to lib/xwrap.c.
Remove endgrent() call until somebody can explain why it was there.
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -92,7 +92,8 @@ void toy_init(struct toy_list *which, char *argv[]) uid_t uid = getuid(), euid = geteuid(); if (!(which->flags & TOYFLAG_STAYROOT)) { - if (uid != euid) xsetuid(euid=uid); // drop root + if (uid != euid) + if (!setuid(euid=uid)) perror_exit("setuid"); // drop root } else if (CFG_TOYBOX_DEBUG && uid && which != toy_list) error_msg("Not installed suid root"); |