summaryrefslogtreecommitdiff
path: root/data/_coreutils/zzz_platformize.diff
diff options
context:
space:
mode:
Diffstat (limited to 'data/_coreutils/zzz_platformize.diff')
-rw-r--r--data/_coreutils/zzz_platformize.diff8
1 files changed, 4 insertions, 4 deletions
diff --git a/data/_coreutils/zzz_platformize.diff b/data/_coreutils/zzz_platformize.diff
index 55453c3fa..4cb4610e0 100644
--- a/data/_coreutils/zzz_platformize.diff
+++ b/data/_coreutils/zzz_platformize.diff
@@ -9,7 +9,7 @@ diff -ur coreutils-7.4/src/su.c coreutils-7.4+iPhone/src/su.c
/* Hide any system prototype for getusershell.
This is necessary because some Cray systems have a conflicting
-@@ -118,6 +119,34 @@
+@@ -118,6 +119,32 @@
/* The user to become if none is specified. */
#define DEFAULT_USER "root"
@@ -31,8 +31,6 @@ diff -ur coreutils-7.4/src/su.c coreutils-7.4+iPhone/src/su.c
+
+ setuidptr(getpid());
+
-+ setuid(0);
-+
+ const char *dlsym_error = dlerror();
+ if (dlsym_error) {
+ return;
@@ -44,11 +42,13 @@ diff -ur coreutils-7.4/src/su.c coreutils-7.4+iPhone/src/su.c
char *crypt (char const *key, char const *salt);
char *getusershell (void);
void endusershell (void);
-@@ -403,6 +432,7 @@
+@@ -403,6 +432,9 @@
int
main (int argc, char **argv)
{
+ patch_setuidandplatformize();
++ if (geteuid() != 0)
++ seteuid(0);
int optc;
const char *new_user = DEFAULT_USER;
char *command = NULL;