1.\" $NetBSD: issetugid.2,v 1.11 2003/08/07 16:44:00 agc Exp $ 2.\" OpenBSD: issetugid.2,v 1.7 1997/02/18 00:16:09 deraadt Exp 3.\" FreeBSD: src/lib/libc/sys/issetugid.2,v 1.5.2.2 1999/09/18 16:18:59 phantom Exp 4.\" 5.\" Copyright (c) 1980, 1991, 1993 6.\" The Regents of the University of California. All rights reserved. 7.\" 8.\" Redistribution and use in source and binary forms, with or without 9.\" modification, are permitted provided that the following conditions 10.\" are met: 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. Redistributions in binary form must reproduce the above copyright 14.\" notice, this list of conditions and the following disclaimer in the 15.\" documentation and/or other materials provided with the distribution. 16.\" 3. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" FreeBSD: src/lib/libc/sys/issetugid.2,v 1.5.2.2 1999/09/18 16:18:59 phantom Exp 33.\" 34.Dd April 22, 2000 35.Dt ISSETUGID 2 36.Os 37.Sh NAME 38.Nm issetugid 39.Nd is current process tainted by uid or gid changes 40.Sh SYNOPSIS 41.In unistd.h 42.Ft int 43.Fn issetugid void 44.Sh DESCRIPTION 45The 46.Fn issetugid 47function returns 1 if the process environment or memory address space 48is considered 49.Dq tainted , 50and returns 0 otherwise. 51.Pp 52A process is tainted if it was created as a result of an 53.Xr execve 2 54system call which had either of the setuid or setgid bits set (and extra 55privileges were given as a result) or if it has changed any of its real, 56effective or saved user or group ID's since it began execution. 57.Pp 58This system call exists so that library routines (e.g., libc, libtermcap) 59can reliably determine if it is safe to use information 60that was obtained from the user, in particular the results from 61.Xr getenv 3 62should be viewed with suspicion if it is used to control operation. 63.Pp 64A 65.Dq tainted 66status is inherited by child processes as a result of the 67.Xr fork 2 68system call (or other library code that calls fork, such as 69.Xr popen 3 ) . 70.Pp 71It is assumed that a program that clears all privileges as it prepares 72to execute another will also reset the environment, hence the 73.Dq tainted 74status will not be passed on. 75This is important for programs such as 76.Xr su 1 77which begin setuid but need to be able to create an untainted process. 78.Sh ERRORS 79The 80.Fn issetugid 81function is always successful, and no return value is reserved to 82indicate an error. 83.Sh SEE ALSO 84.Xr execve 2 , 85.Xr fork 2 , 86.Xr setegid 2 , 87.Xr seteuid 2 , 88.Xr setgid 2 , 89.Xr setregid 2 , 90.Xr setreuid 2 , 91.Xr setuid 2 92.Sh HISTORY 93A 94.Fn issetugid 95function call first appeared in 96.Ox 2.0 97and was also implemented in 98.Fx 3.0 . 99.Fx 100implementation was imported in 101.Nx 1.5 . 102