1 /* 2 * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify it 5 * under the terms of version 2 of the GNU General Public License as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it would be useful, but 9 * WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 * 12 * Further, this software is distributed without any warranty that it is 13 * free of the rightful claim of any third person regarding infringement 14 * or the like. Any license provided herein, whether implied or 15 * otherwise, applies only to this software file. Patent licenses, if 16 * any, provided herein do not apply to combinations of this program with 17 * other software, or any other product whatsoever. 18 * 19 * You should have received a copy of the GNU General Public License along 20 * with this program; if not, write the Free Software Foundation, Inc., 21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 22 * 23 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 24 * Mountain View, CA 94043, or: 25 * 26 * http://www.sgi.com 27 * 28 * For further information regarding this notice, see: 29 * 30 * http://oss.sgi.com/projects/GenInfo/NoticeExplan/ 31 * 32 */ 33 /* 34 * AUTHOR : William Roske 35 * CO-PILOT : Dave Fenner 36 */ 37 #include <errno.h> 38 #include <string.h> 39 #include <signal.h> 40 41 #include "test.h" 42 #include "compat_16.h" 43 44 static void setup(void); 45 static void cleanup(void); 46 47 TCID_DEFINE(setgid01); 48 int TST_TOTAL = 1; 49 50 static gid_t gid; 51 52 int main(int ac, char **av) 53 { 54 int lc; 55 56 tst_parse_opts(ac, av, NULL, NULL); 57 58 setup(); 59 60 for (lc = 0; TEST_LOOPING(lc); lc++) { 61 tst_count = 0; 62 63 TEST(SETGID(cleanup, gid)); 64 65 if (TEST_RETURN == -1) { 66 tst_resm(TFAIL, "setgid(%d) Failed, errno=%d : %s", gid, 67 TEST_ERRNO, strerror(TEST_ERRNO)); 68 } else { 69 tst_resm(TPASS, "setgid(%d) returned %ld", gid, 70 TEST_RETURN); 71 } 72 73 } 74 75 cleanup(); 76 tst_exit(); 77 } 78 79 static void setup(void) 80 { 81 tst_sig(NOFORK, DEF_HANDLER, cleanup); 82 83 TEST_PAUSE; 84 85 gid = getgid(); 86 GID16_CHECK(gid, setgid, cleanup); 87 } 88 89 static void cleanup(void) 90 { 91 } 92