51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
| // SPDX-License-Identifier: GPL-2.0-or-later
 | |
| /*
 | |
|  * Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
 | |
|  * Author: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
 | |
|  *
 | |
|  * dummy program which is used by prctl06 testcase
 | |
|  */
 | |
| #define TST_NO_DEFAULT_MAIN
 | |
| #include "prctl06.h"
 | |
| 
 | |
| 
 | |
| int main(int argc, char **argv)
 | |
| {
 | |
| 	struct passwd *pw;
 | |
| 	int proc_flag;
 | |
| 
 | |
| 	pw = SAFE_GETPWNAM("nobody");
 | |
| 
 | |
| 	tst_reinit();
 | |
| 	if (argc != 3)
 | |
| 		tst_brk(TFAIL, "argc is %d, expected 3", argc);
 | |
| 
 | |
| 	if (!strcmp(argv[2], "Yes"))
 | |
| 		proc_flag = 1;
 | |
| 	else
 | |
| 		proc_flag = 0;
 | |
| 	check_no_new_privs(1, argv[1], proc_flag);
 | |
| 
 | |
| 	TEST(getegid());
 | |
| 	if (TST_RET == 0)
 | |
| 		tst_res(TFAIL,
 | |
| 			"%s getegid() returns 0 unexpectedly, it gains root privileges",
 | |
| 			argv[1]);
 | |
| 	if (TST_RET == pw->pw_gid)
 | |
| 		tst_res(TPASS,
 | |
| 			"%s getegid() returns nobody, it doesn't gain root privileges",
 | |
| 			argv[1]);
 | |
| 
 | |
| 	TEST(geteuid());
 | |
| 	if (TST_RET == 0)
 | |
| 		tst_res(TFAIL,
 | |
| 			"%s geteuid() returns 0 unexpectedly, it gains root privileges",
 | |
| 			argv[1]);
 | |
| 	if (TST_RET == pw->pw_uid)
 | |
| 		tst_res(TPASS,
 | |
| 			"%s geteuid() returns nobody, it doesn't gain root privileges",
 | |
| 			argv[1]);
 | |
| 
 | |
| 	return 0;
 | |
| }
 |