diff options
Diffstat (limited to 'main/bash/bash_4.3-fix-setuid.patch')
-rw-r--r-- | main/bash/bash_4.3-fix-setuid.patch | 31 |
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 |