summaryrefslogtreecommitdiffstats
path: root/main/bash/bash_4.3-fix-setuid.patch
blob: 4f8a7a099965613de0c66c33db179fa903d7da5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
diff --git shell.c shell.c
index bbc8a66..5bfd466 100644
--- shell.c
+++ shell.c
@@ -1226,8 +1226,12 @@ uidget ()
 void
 disable_priv_mode ()
 {
-  setuid (current_user.uid);
-  setgid (current_user.gid);
+   
+  if( (setuid (current_user.uid) !=0) ||  (setgid (current_user.gid) != 0) ){
+     report_error("Drop privileges failed!!\n");
+     exit(EX_DROPFAIL);
+  }
+  
   current_user.euid = current_user.uid;
   current_user.egid = current_user.gid;
 }
diff --git shell.h shell.h
index 243e467..c3625be 100644
--- shell.h
+++ shell.h
@@ -72,6 +72,7 @@ extern int EOF_Reached;
 #define EX_REDIRFAIL	259	/* redirection failed */
 #define EX_BADASSIGN	260	/* variable assignment error */
 #define EX_EXPFAIL	261	/* word expansion failed */
+#define EX_DROPFAIL  262   /* Drop privileges failed */
 
 /* Flag values that control parameter pattern substitution. */
 #define MATCH_ANY	0x000