--- /SourceCache/bash/bash-73/bash/shell.c 2007-03-16 19:26:03.000000000 -0700 +++ ./shell.c 2007-05-18 15:47:47.000000000 -0700 @@ -478,6 +478,14 @@ main (argc, argv, env) #ifdef __APPLE__ if (running_setuid && privileged_mode == 0 && (tiger_mode ? (act_like_sh == 0) : 1)) disable_priv_mode (); + else if (running_setuid && privileged_mode != 0) { + uid_t euid = geteuid(); + uid_t ruid = getuid(); + if (-1 == setuid(euid)) + internal_error( _("setuid(%u) failed: %s"), euid, strerror(errno)); + if (-1 == setreuid(ruid, euid)) + internal_error( _("setreuid(%u,%u) failed: %s"), ruid, euid, strerror(errno)); + } #else /* !__APPLE__ */ if (running_setuid && privileged_mode == 0) disable_priv_mode ();