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
|