158f0484fSRodney W. Grimes.\" Copyright (c) 1988, 1991, 1993 258f0484fSRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 358f0484fSRodney W. Grimes.\" 458f0484fSRodney W. Grimes.\" This code is derived from software contributed to Berkeley by 558f0484fSRodney W. Grimes.\" the American National Standards Committee X3, on Information 658f0484fSRodney W. Grimes.\" Processing Systems. 758f0484fSRodney W. Grimes.\" 858f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 958f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions 1058f0484fSRodney W. Grimes.\" are met: 1158f0484fSRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright 1258f0484fSRodney W. Grimes.\" notice, this list of conditions and the following disclaimer. 1358f0484fSRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright 1458f0484fSRodney W. Grimes.\" notice, this list of conditions and the following disclaimer in the 1558f0484fSRodney W. Grimes.\" documentation and/or other materials provided with the distribution. 1658f0484fSRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software 1758f0484fSRodney W. Grimes.\" must display the following acknowledgement: 1858f0484fSRodney W. Grimes.\" This product includes software developed by the University of 1958f0484fSRodney W. Grimes.\" California, Berkeley and its contributors. 2058f0484fSRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors 2158f0484fSRodney W. Grimes.\" may be used to endorse or promote products derived from this software 2258f0484fSRodney W. Grimes.\" without specific prior written permission. 2358f0484fSRodney W. Grimes.\" 2458f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2558f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2658f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2758f0484fSRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2858f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2958f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3058f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3158f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3258f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3358f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3458f0484fSRodney W. Grimes.\" SUCH DAMAGE. 3558f0484fSRodney W. Grimes.\" 3658f0484fSRodney W. Grimes.\" @(#)tmpnam.3 8.2 (Berkeley) 11/17/93 377f3dea24SPeter Wemm.\" $FreeBSD$ 3858f0484fSRodney W. Grimes.\" 3958f0484fSRodney W. Grimes.Dd November 17, 1993 4058f0484fSRodney W. Grimes.Dt TMPFILE 3 4158f0484fSRodney W. Grimes.Os 4258f0484fSRodney W. Grimes.Sh NAME 4358f0484fSRodney W. Grimes.Nm tempnam , 4458f0484fSRodney W. Grimes.Nm tmpfile , 4558f0484fSRodney W. Grimes.Nm tmpnam 4658f0484fSRodney W. Grimes.Nd temporary file routines 4725bb73e0SAlexey Zelkin.Sh LIBRARY 4825bb73e0SAlexey Zelkin.Lb libc 4958f0484fSRodney W. Grimes.Sh SYNOPSIS 5032eef9aeSRuslan Ermilov.In stdio.h 5158f0484fSRodney W. Grimes.Ft FILE * 5258f0484fSRodney W. Grimes.Fn tmpfile void 5358f0484fSRodney W. Grimes.Ft char * 5458f0484fSRodney W. Grimes.Fn tmpnam "char *str" 5558f0484fSRodney W. Grimes.Ft char * 5658f0484fSRodney W. Grimes.Fn tempnam "const char *tmpdir" "const char *prefix" 5758f0484fSRodney W. Grimes.Sh DESCRIPTION 5858f0484fSRodney W. GrimesThe 5958f0484fSRodney W. Grimes.Fn tmpfile 6058f0484fSRodney W. Grimesfunction 6158f0484fSRodney W. Grimesreturns a pointer to a stream associated with a file descriptor returned 6258f0484fSRodney W. Grimesby the routine 6358f0484fSRodney W. Grimes.Xr mkstemp 3 . 6458f0484fSRodney W. GrimesThe created file is unlinked before 6558f0484fSRodney W. Grimes.Fn tmpfile 6658f0484fSRodney W. Grimesreturns, causing the file to be automatically deleted when the last 6758f0484fSRodney W. Grimesreference to it is closed. 6858f0484fSRodney W. GrimesThe file is opened with the access value 6958f0484fSRodney W. Grimes.Ql w+ . 700bada860SMike HeffnerThe file is created in the directory determined by the environment variable 710bada860SMike Heffner.Ev TMPDIR 720bada860SMike Heffnerif set. 730bada860SMike HeffnerThe default location if 740bada860SMike Heffner.Ev TMPDIR 750bada860SMike Heffneris not set is 760bada860SMike Heffner.Pa /tmp . 7758f0484fSRodney W. Grimes.Pp 7858f0484fSRodney W. GrimesThe 7958f0484fSRodney W. Grimes.Fn tmpnam 8058f0484fSRodney W. Grimesfunction 8158f0484fSRodney W. Grimesreturns a pointer to a file name, in the 8258f0484fSRodney W. Grimes.Dv P_tmpdir 8358f0484fSRodney W. Grimesdirectory, which 8458f0484fSRodney W. Grimesdid not reference an existing file at some indeterminate point in the 8558f0484fSRodney W. Grimespast. 8658f0484fSRodney W. Grimes.Dv P_tmpdir 8758f0484fSRodney W. Grimesis defined in the include file 8858f0484fSRodney W. Grimes.Aq Pa stdio.h . 8958f0484fSRodney W. GrimesIf the argument 903076db19SKris Kennaway.Fa str 9158f0484fSRodney W. Grimesis 9258f0484fSRodney W. Grimes.Pf non- Dv NULL , 9358f0484fSRodney W. Grimesthe file name is copied to the buffer it references. 9458f0484fSRodney W. GrimesOtherwise, the file name is copied to a static buffer. 9558f0484fSRodney W. GrimesIn either case, 9658f0484fSRodney W. Grimes.Fn tmpnam 9758f0484fSRodney W. Grimesreturns a pointer to the file name. 9858f0484fSRodney W. Grimes.Pp 9958f0484fSRodney W. GrimesThe buffer referenced by 1003076db19SKris Kennaway.Fa str 10158f0484fSRodney W. Grimesis expected to be at least 10258f0484fSRodney W. Grimes.Dv L_tmpnam 10358f0484fSRodney W. Grimesbytes in length. 10458f0484fSRodney W. Grimes.Dv L_tmpnam 10558f0484fSRodney W. Grimesis defined in the include file 10658f0484fSRodney W. Grimes.Aq Pa stdio.h . 10758f0484fSRodney W. Grimes.Pp 10858f0484fSRodney W. GrimesThe 10958f0484fSRodney W. Grimes.Fn tempnam 11058f0484fSRodney W. Grimesfunction 11158f0484fSRodney W. Grimesis similar to 11258f0484fSRodney W. Grimes.Fn tmpnam , 11358f0484fSRodney W. Grimesbut provides the ability to specify the directory which will 11458f0484fSRodney W. Grimescontain the temporary file and the file name prefix. 11558f0484fSRodney W. Grimes.Pp 11658f0484fSRodney W. GrimesThe environment variable 11758f0484fSRodney W. Grimes.Ev TMPDIR 11858f0484fSRodney W. Grimes(if set), the argument 11958f0484fSRodney W. Grimes.Fa tmpdir 12058f0484fSRodney W. Grimes(if 12158f0484fSRodney W. Grimes.Pf non- Dv NULL ) , 12258f0484fSRodney W. Grimesthe directory 12358f0484fSRodney W. Grimes.Dv P_tmpdir , 12458f0484fSRodney W. Grimesand the directory 12558f0484fSRodney W. Grimes.Pa /tmp 12658f0484fSRodney W. Grimesare tried, in the listed order, as directories in which to store the 12758f0484fSRodney W. Grimestemporary file. 12858f0484fSRodney W. Grimes.Pp 12958f0484fSRodney W. GrimesThe argument 13058f0484fSRodney W. Grimes.Fa prefix , 13158f0484fSRodney W. Grimesif 13258f0484fSRodney W. Grimes.Pf non- Dv NULL , 13358f0484fSRodney W. Grimesis used to specify a file name prefix, which will be the 13458f0484fSRodney W. Grimesfirst part of the created file name. 1351fae73b1SRuslan ErmilovThe 1361fae73b1SRuslan Ermilov.Fn tempnam 1371fae73b1SRuslan Ermilovfunction 13858f0484fSRodney W. Grimesallocates memory in which to store the file name; the returned pointer 13958f0484fSRodney W. Grimesmay be used as a subsequent argument to 14058f0484fSRodney W. Grimes.Xr free 3 . 14158f0484fSRodney W. Grimes.Sh RETURN VALUES 14258f0484fSRodney W. GrimesThe 14358f0484fSRodney W. Grimes.Fn tmpfile 14458f0484fSRodney W. Grimesfunction 14558f0484fSRodney W. Grimesreturns a pointer to an open file stream on success, and a 14658f0484fSRodney W. Grimes.Dv NULL 14758f0484fSRodney W. Grimespointer 14858f0484fSRodney W. Grimeson error. 14958f0484fSRodney W. Grimes.Pp 15058f0484fSRodney W. GrimesThe 15158f0484fSRodney W. Grimes.Fn tmpnam 15258f0484fSRodney W. Grimesand 15358f0484fSRodney W. Grimes.Fn tempfile 15458f0484fSRodney W. Grimesfunctions 15558f0484fSRodney W. Grimesreturn a pointer to a file name on success, and a 15658f0484fSRodney W. Grimes.Dv NULL 15758f0484fSRodney W. Grimespointer 15858f0484fSRodney W. Grimeson error. 15958f0484fSRodney W. Grimes.Sh ERRORS 16058f0484fSRodney W. GrimesThe 16158f0484fSRodney W. Grimes.Fn tmpfile 16258f0484fSRodney W. Grimesfunction 16358f0484fSRodney W. Grimesmay fail and set the global variable 16458f0484fSRodney W. Grimes.Va errno 16558f0484fSRodney W. Grimesfor any of the errors specified for the library functions 16658f0484fSRodney W. Grimes.Xr fdopen 3 16758f0484fSRodney W. Grimesor 16858f0484fSRodney W. Grimes.Xr mkstemp 3 . 16958f0484fSRodney W. Grimes.Pp 17058f0484fSRodney W. GrimesThe 17158f0484fSRodney W. Grimes.Fn tmpnam 17258f0484fSRodney W. Grimesfunction 17358f0484fSRodney W. Grimesmay fail and set 17458f0484fSRodney W. Grimes.Va errno 17558f0484fSRodney W. Grimesfor any of the errors specified for the library function 17658f0484fSRodney W. Grimes.Xr mktemp 3 . 17758f0484fSRodney W. Grimes.Pp 17858f0484fSRodney W. GrimesThe 17958f0484fSRodney W. Grimes.Fn tempnam 18058f0484fSRodney W. Grimesfunction 18158f0484fSRodney W. Grimesmay fail and set 18258f0484fSRodney W. Grimes.Va errno 18358f0484fSRodney W. Grimesfor any of the errors specified for the library functions 18458f0484fSRodney W. Grimes.Xr malloc 3 18558f0484fSRodney W. Grimesor 18658f0484fSRodney W. Grimes.Xr mktemp 3 . 187e125c135SChris Costello.Sh SECURITY CONSIDERATIONS 188e125c135SChris CostelloThe 189e125c135SChris Costello.Fn tmpnam 190e125c135SChris Costelloand 191e125c135SChris Costello.Fn tempnam 1926ba681a1SChris Costellofunctions are susceptible to a race condition 1936ba681a1SChris Costellooccuring between the selection of the file name 1946ba681a1SChris Costelloand the creation of the file, 195e125c135SChris Costellowhich allows malicious users 196e125c135SChris Costelloto potentially overwrite arbitrary files in the system, 197e125c135SChris Costellodepending on the level of privilege of the running program. 1986ba681a1SChris CostelloAdditionally, there is no means by which 1996ba681a1SChris Costellofile permissions may be specified. 200e125c135SChris CostelloIt is strongly suggested that 201e125c135SChris Costello.Xr mkstemp 3 202e125c135SChris Costellobe used in place of these functions. 203e125c135SChris Costello(See 204e125c135SChris Costellothe FSA.) 2056ba681a1SChris Costello.Sh COMPATIBILITY 2066ba681a1SChris CostelloThese interfaces are provided from System V and 2076ba681a1SChris Costello.Tn ANSI 2086ba681a1SChris Costellocompatibility only. 2096ba681a1SChris Costello.Pp 2106ba681a1SChris CostelloMost historic implementations of these functions provide 2116ba681a1SChris Costelloonly a limited number of possible temporary file names 2126ba681a1SChris Costello(usually 26) 2136ba681a1SChris Costellobefore file names will start being recycled. 2146ba681a1SChris CostelloSystem V implementations of these functions 2156ba681a1SChris Costello(and of 2166ba681a1SChris Costello.Xr mktemp 3 ) 2176ba681a1SChris Costellouse the 2186ba681a1SChris Costello.Xr access 2 2196ba681a1SChris Costellosystem call to determine whether or not the temporary file 2206ba681a1SChris Costellomay be created. 2216ba681a1SChris CostelloThis has obvious ramifications for setuid or setgid programs, 2226ba681a1SChris Costellocomplicating the portable use of these interfaces in such programs. 2236ba681a1SChris Costello.Pp 2246ba681a1SChris CostelloThe 2256ba681a1SChris Costello.Fn tmpfile 2266ba681a1SChris Costellointerface should not be used in software expected to be used on other systems 2276ba681a1SChris Costelloif there is any possibility that the user does not wish the temporary file to 2286ba681a1SChris Costellobe publicly readable and writable. 22958f0484fSRodney W. Grimes.Sh SEE ALSO 23058f0484fSRodney W. Grimes.Xr mkstemp 3 , 23158f0484fSRodney W. Grimes.Xr mktemp 3 232e125c135SChris Costello.Rs 233e125c135SChris Costello.%T "The FreeBSD Security Architecture" 234e125c135SChris Costello.Re 235ce9df6eeSRuslan Ermilov(See 236ce9df6eeSRuslan Ermilov.Pa "/usr/share/doc/{to be determined}" . ) 23758f0484fSRodney W. Grimes.Sh STANDARDS 23858f0484fSRodney W. GrimesThe 23958f0484fSRodney W. Grimes.Fn tmpfile 24058f0484fSRodney W. Grimesand 24158f0484fSRodney W. Grimes.Fn tmpnam 24258f0484fSRodney W. Grimesfunctions 24358f0484fSRodney W. Grimesconform to 244588a200cSRuslan Ermilov.St -isoC . 245