aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-02-18 11:08:33 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-02-18 11:08:33 +0000
commitc9ca0a32745a43eaa6cb6b7b460718de8ccb84f2 (patch)
tree2b4bdf035b3a3c0436ce823e137d969af4d3a06f /libbb
parent56244736ec7d0a3c338f542204aae83fb0200346 (diff)
downloadbusybox-w32-c9ca0a32745a43eaa6cb6b7b460718de8ccb84f2.tar.gz
busybox-w32-c9ca0a32745a43eaa6cb6b7b460718de8ccb84f2.tar.bz2
busybox-w32-c9ca0a32745a43eaa6cb6b7b460718de8ccb84f2.zip
mount: recognize "dirsync" (closes bug 835)
mount: sanitize environ if called by non-root *: adjust for slightly different sanitize routine
Diffstat (limited to 'libbb')
-rw-r--r--libbb/login.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libbb/login.c b/libbb/login.c
index 1af3165b9..d1f5d6498 100644
--- a/libbb/login.c
+++ b/libbb/login.c
@@ -116,12 +116,19 @@ static const char forbid[] ALIGN1 =
116 "LD_NOWARN" "\0" 116 "LD_NOWARN" "\0"
117 "LD_KEEPDIR" "\0"; 117 "LD_KEEPDIR" "\0";
118 118
119void sanitize_env_for_suid(void) 119int sanitize_env_if_suid(void)
120{ 120{
121 const char *p = forbid; 121 const char *p;
122
123 if (getuid() == geteuid())
124 return 0;
125
126 p = forbid;
122 do { 127 do {
123 unsetenv(p); 128 unsetenv(p);
124 p += strlen(p) + 1; 129 p += strlen(p) + 1;
125 } while (*p); 130 } while (*p);
126 putenv((char*)bb_PATH_root_path); 131 putenv((char*)bb_PATH_root_path);
132
133 return 1; /* we indeed were run by different user! */
127} 134}