From 5c87c1426b5c99dd1f2a3ac7493996c342efef4e Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sun, 31 Aug 2014 11:58:39 -0500 Subject: Give a hint when setuid logic fails. Toybox expects to be setuid root; setuid some other user confuses the attempt to drop privileges, and we err on the side of avoiding shenanigans. --- main.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 6321ad13..5bd44602 100644 --- a/main.c +++ b/main.c @@ -96,8 +96,10 @@ void toy_init(struct toy_list *which, char *argv[]) uid_t uid = getuid(), euid = geteuid(); if (!(which->flags & TOYFLAG_STAYROOT)) { - if (uid != euid) - if (!setuid(euid=uid)) perror_exit("setuid"); // drop root + if (uid != euid) { + if (!setuid(uid)) perror_exit("setuid %d->%d", euid, uid); // drop root + else euid = uid; + } } else if (CFG_TOYBOX_DEBUG && uid && which != toy_list) error_msg("Not installed suid root"); -- cgit v1.2.3