--- /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 ();