aboutsummaryrefslogtreecommitdiffstats
path: root/main/bash/bash_4.3-fix-setuid.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/bash/bash_4.3-fix-setuid.patch')
-rw-r--r--main/bash/bash_4.3-fix-setuid.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/main/bash/bash_4.3-fix-setuid.patch b/main/bash/bash_4.3-fix-setuid.patch
new file mode 100644
index 0000000000..4f8a7a0999
--- /dev/null
+++ b/main/bash/bash_4.3-fix-setuid.patch
@@ -0,0 +1,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