]> granicus.if.org Git - sudo/commitdiff
setreuid(0, 0) fails on QNX if the euid is not already 0 so set the
authorTodd C. Miller <Todd.Miller@courtesan.com>
Fri, 6 Feb 2004 23:08:04 +0000 (23:08 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Fri, 6 Feb 2004 23:08:04 +0000 (23:08 +0000)
euid first, then just call setuid(0) to set the real uid too.

set_perms.c

index 8d9e47b00185187913e15aacf80f02e4a17adb9c..6588024eeaf25249bab4c6e123636eebf044e8c6 100644 (file)
@@ -256,8 +256,10 @@ set_perms_suid(perm)
     switch (perm) {
        case PERM_FULL_ROOT:
        case PERM_ROOT:
-                               if (setreuid(0, 0))
-                                   fatal("setreuid(0, 0) failed, your operating system may have a broken setreuid() function\nTry running configure with --disable-setreuid", 0);
+                               if (setreuid(-1, 0))
+                                   fatal("setreuid(-1, 0) failed, your operating system may have a broken setreuid() function\nTry running configure with --disable-setreuid", 0);
+                               if (setuid(0))
+                                   fatal("setuid(0)", 1);
                                break;
 
        case PERM_USER: