1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later 2*49cdfc7eSAndroid Build Coastguard Worker /* 3*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) International Business Machines Corp., 2001 4*49cdfc7eSAndroid Build Coastguard Worker * 07/2001 Ported by Wayne Boyer 5*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) 2022 SUSE LLC Avinesh Kumar <[email protected]> 6*49cdfc7eSAndroid Build Coastguard Worker */ 7*49cdfc7eSAndroid Build Coastguard Worker 8*49cdfc7eSAndroid Build Coastguard Worker /*\ 9*49cdfc7eSAndroid Build Coastguard Worker * [Description] 10*49cdfc7eSAndroid Build Coastguard Worker * 11*49cdfc7eSAndroid Build Coastguard Worker * Verify that session IDs returned by getsid() (with argument pid=0) 12*49cdfc7eSAndroid Build Coastguard Worker * are same in parent and child process. 13*49cdfc7eSAndroid Build Coastguard Worker */ 14*49cdfc7eSAndroid Build Coastguard Worker 15*49cdfc7eSAndroid Build Coastguard Worker 16*49cdfc7eSAndroid Build Coastguard Worker #include "tst_test.h" 17*49cdfc7eSAndroid Build Coastguard Worker 18*49cdfc7eSAndroid Build Coastguard Worker static pid_t p_sid; 19*49cdfc7eSAndroid Build Coastguard Worker run(void)20*49cdfc7eSAndroid Build Coastguard Workerstatic void run(void) 21*49cdfc7eSAndroid Build Coastguard Worker { 22*49cdfc7eSAndroid Build Coastguard Worker pid_t pid, c_sid; 23*49cdfc7eSAndroid Build Coastguard Worker 24*49cdfc7eSAndroid Build Coastguard Worker TEST(getsid(0)); 25*49cdfc7eSAndroid Build Coastguard Worker if (TST_RET == -1) { 26*49cdfc7eSAndroid Build Coastguard Worker tst_res(TFAIL | TTERRNO, "getsid(0) failed in parent"); 27*49cdfc7eSAndroid Build Coastguard Worker return; 28*49cdfc7eSAndroid Build Coastguard Worker } 29*49cdfc7eSAndroid Build Coastguard Worker 30*49cdfc7eSAndroid Build Coastguard Worker p_sid = TST_RET; 31*49cdfc7eSAndroid Build Coastguard Worker 32*49cdfc7eSAndroid Build Coastguard Worker pid = SAFE_FORK(); 33*49cdfc7eSAndroid Build Coastguard Worker 34*49cdfc7eSAndroid Build Coastguard Worker if (pid == 0) { 35*49cdfc7eSAndroid Build Coastguard Worker TEST(getsid(0)); 36*49cdfc7eSAndroid Build Coastguard Worker if (TST_RET == -1) { 37*49cdfc7eSAndroid Build Coastguard Worker tst_res(TFAIL | TTERRNO, "getsid(0) failed in child"); 38*49cdfc7eSAndroid Build Coastguard Worker return; 39*49cdfc7eSAndroid Build Coastguard Worker } 40*49cdfc7eSAndroid Build Coastguard Worker c_sid = TST_RET; 41*49cdfc7eSAndroid Build Coastguard Worker TST_EXP_EQ_LI(p_sid, c_sid); 42*49cdfc7eSAndroid Build Coastguard Worker } else { 43*49cdfc7eSAndroid Build Coastguard Worker SAFE_WAITPID(pid, NULL, 0); 44*49cdfc7eSAndroid Build Coastguard Worker } 45*49cdfc7eSAndroid Build Coastguard Worker } 46*49cdfc7eSAndroid Build Coastguard Worker 47*49cdfc7eSAndroid Build Coastguard Worker static struct tst_test test = { 48*49cdfc7eSAndroid Build Coastguard Worker .test_all = run, 49*49cdfc7eSAndroid Build Coastguard Worker .forks_child = 1 50*49cdfc7eSAndroid Build Coastguard Worker }; 51