use issetugid(2) as additional aid in determining if we are FPRIVILEGED
This commit is contained in:
		
							
								
								
									
										9
									
								
								Build.sh
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								Build.sh
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | |||||||
| #!/bin/sh | #!/bin/sh | ||||||
| srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.666 2014/09/29 18:57:00 tg Exp $' | srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.667 2014/10/03 17:19:26 tg Exp $' | ||||||
| #- | #- | ||||||
| # Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, | # Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, | ||||||
| #		2011, 2012, 2013, 2014 | #		2011, 2012, 2013, 2014 | ||||||
| @@ -1784,7 +1784,7 @@ else | |||||||
| 		#define EXTERN | 		#define EXTERN | ||||||
| 		#define MKSH_INCLUDES_ONLY | 		#define MKSH_INCLUDES_ONLY | ||||||
| 		#include "sh.h" | 		#include "sh.h" | ||||||
| 		__RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.666 2014/09/29 18:57:00 tg Exp $"); | 		__RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.667 2014/10/03 17:19:26 tg Exp $"); | ||||||
| 		int main(void) { printf("Hello, World!\n"); return (isatty(0)); } | 		int main(void) { printf("Hello, World!\n"); return (isatty(0)); } | ||||||
| EOF | EOF | ||||||
| 	case $cm in | 	case $cm in | ||||||
| @@ -1904,6 +1904,11 @@ ac_test gettimeofday <<-'EOF' | |||||||
| 	int main(void) { struct timeval tv; return (gettimeofday(&tv, NULL)); } | 	int main(void) { struct timeval tv; return (gettimeofday(&tv, NULL)); } | ||||||
| EOF | EOF | ||||||
|  |  | ||||||
|  | ac_test issetugid <<-'EOF' | ||||||
|  | 	#include <unistd.h> | ||||||
|  | 	int main(void) { return (issetugid()); } | ||||||
|  | EOF | ||||||
|  |  | ||||||
| ac_test killpg <<-'EOF' | ac_test killpg <<-'EOF' | ||||||
| 	#include <signal.h> | 	#include <signal.h> | ||||||
| 	int main(int ac, char *av[]) { return (av[0][killpg(123, ac)]); } | 	int main(int ac, char *av[]) { return (av[0][killpg(123, ac)]); } | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								main.c
									
									
									
									
									
								
							| @@ -34,7 +34,7 @@ | |||||||
| #include <locale.h> | #include <locale.h> | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| __RCSID("$MirOS: src/bin/mksh/main.c,v 1.283 2014/10/02 13:55:16 tg Exp $"); | __RCSID("$MirOS: src/bin/mksh/main.c,v 1.284 2014/10/03 17:19:27 tg Exp $"); | ||||||
|  |  | ||||||
| extern char **environ; | extern char **environ; | ||||||
|  |  | ||||||
| @@ -407,7 +407,11 @@ main_init(int argc, const char *argv[], Source **sp, struct block **lp) | |||||||
| 	setint_n((vp_pipest = global("PIPESTATUS")), 0, 10); | 	setint_n((vp_pipest = global("PIPESTATUS")), 0, 10); | ||||||
|  |  | ||||||
| 	/* Set this before parsing arguments */ | 	/* Set this before parsing arguments */ | ||||||
| 	Flag(FPRIVILEGED) = (kshuid != ksheuid || kshgid != kshegid) ? 2 : 0; | 	Flag(FPRIVILEGED) = ( | ||||||
|  | #if HAVE_ISSETUGID | ||||||
|  | 	    issetugid() || | ||||||
|  | #endif | ||||||
|  | 	    kshuid != ksheuid || kshgid != kshegid) ? 2 : 0; | ||||||
|  |  | ||||||
| 	/* this to note if monitor is set on command line (see below) */ | 	/* this to note if monitor is set on command line (see below) */ | ||||||
| #ifndef MKSH_UNEMPLOYED | #ifndef MKSH_UNEMPLOYED | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user