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. 16*fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors 1758f0484fSRodney W. Grimes.\" may be used to endorse or promote products derived from this software 1858f0484fSRodney W. Grimes.\" without specific prior written permission. 1958f0484fSRodney W. Grimes.\" 2058f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2158f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2258f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2358f0484fSRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2458f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2558f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2658f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2758f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2858f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2958f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3058f0484fSRodney W. Grimes.\" SUCH DAMAGE. 3158f0484fSRodney W. Grimes.\" 3258f0484fSRodney W. Grimes.\" @(#)tmpnam.3 8.2 (Berkeley) 11/17/93 337f3dea24SPeter Wemm.\" $FreeBSD$ 3458f0484fSRodney W. Grimes.\" 35a0490929SMaxim Konovalov.Dd March 18, 2007 3658f0484fSRodney W. Grimes.Dt TMPFILE 3 3758f0484fSRodney W. Grimes.Os 3858f0484fSRodney W. Grimes.Sh NAME 3958f0484fSRodney W. Grimes.Nm tempnam , 4058f0484fSRodney W. Grimes.Nm tmpfile , 4158f0484fSRodney W. Grimes.Nm tmpnam 4258f0484fSRodney W. Grimes.Nd temporary file routines 4325bb73e0SAlexey Zelkin.Sh LIBRARY 4425bb73e0SAlexey Zelkin.Lb libc 4558f0484fSRodney W. Grimes.Sh SYNOPSIS 4632eef9aeSRuslan Ermilov.In stdio.h 4758f0484fSRodney W. Grimes.Ft FILE * 4858f0484fSRodney W. Grimes.Fn tmpfile void 4958f0484fSRodney W. Grimes.Ft char * 5058f0484fSRodney W. Grimes.Fn tmpnam "char *str" 5158f0484fSRodney W. Grimes.Ft char * 5258f0484fSRodney W. Grimes.Fn tempnam "const char *tmpdir" "const char *prefix" 5358f0484fSRodney W. Grimes.Sh DESCRIPTION 5458f0484fSRodney W. GrimesThe 5558f0484fSRodney W. Grimes.Fn tmpfile 5658f0484fSRodney W. Grimesfunction 5758f0484fSRodney W. Grimesreturns a pointer to a stream associated with a file descriptor returned 5858f0484fSRodney W. Grimesby the routine 5958f0484fSRodney W. Grimes.Xr mkstemp 3 . 6058f0484fSRodney W. GrimesThe created file is unlinked before 6158f0484fSRodney W. Grimes.Fn tmpfile 6258f0484fSRodney W. Grimesreturns, causing the file to be automatically deleted when the last 6358f0484fSRodney W. Grimesreference to it is closed. 6458f0484fSRodney W. GrimesThe file is opened with the access value 6558f0484fSRodney W. Grimes.Ql w+ . 660bada860SMike HeffnerThe file is created in the directory determined by the environment variable 670bada860SMike Heffner.Ev TMPDIR 680bada860SMike Heffnerif set. 690bada860SMike HeffnerThe default location if 700bada860SMike Heffner.Ev TMPDIR 710bada860SMike Heffneris not set is 720bada860SMike Heffner.Pa /tmp . 7358f0484fSRodney W. Grimes.Pp 7458f0484fSRodney W. GrimesThe 7558f0484fSRodney W. Grimes.Fn tmpnam 7658f0484fSRodney W. Grimesfunction 7758f0484fSRodney W. Grimesreturns a pointer to a file name, in the 7858f0484fSRodney W. Grimes.Dv P_tmpdir 7958f0484fSRodney W. Grimesdirectory, which 8058f0484fSRodney W. Grimesdid not reference an existing file at some indeterminate point in the 8158f0484fSRodney W. Grimespast. 8258f0484fSRodney W. Grimes.Dv P_tmpdir 8358f0484fSRodney W. Grimesis defined in the include file 84fe08efe6SRuslan Ermilov.In stdio.h . 8558f0484fSRodney W. GrimesIf the argument 863076db19SKris Kennaway.Fa str 8758f0484fSRodney W. Grimesis 8858f0484fSRodney W. Grimes.Pf non- Dv NULL , 8958f0484fSRodney W. Grimesthe file name is copied to the buffer it references. 9058f0484fSRodney W. GrimesOtherwise, the file name is copied to a static buffer. 9158f0484fSRodney W. GrimesIn either case, 9258f0484fSRodney W. Grimes.Fn tmpnam 9358f0484fSRodney W. Grimesreturns a pointer to the file name. 9458f0484fSRodney W. Grimes.Pp 9558f0484fSRodney W. GrimesThe buffer referenced by 963076db19SKris Kennaway.Fa str 9758f0484fSRodney W. Grimesis expected to be at least 9858f0484fSRodney W. Grimes.Dv L_tmpnam 9958f0484fSRodney W. Grimesbytes in length. 10058f0484fSRodney W. Grimes.Dv L_tmpnam 10158f0484fSRodney W. Grimesis defined in the include file 102fe08efe6SRuslan Ermilov.In stdio.h . 10358f0484fSRodney W. Grimes.Pp 10458f0484fSRodney W. GrimesThe 10558f0484fSRodney W. Grimes.Fn tempnam 10658f0484fSRodney W. Grimesfunction 10758f0484fSRodney W. Grimesis similar to 10858f0484fSRodney W. Grimes.Fn tmpnam , 10958f0484fSRodney W. Grimesbut provides the ability to specify the directory which will 11058f0484fSRodney W. Grimescontain the temporary file and the file name prefix. 11158f0484fSRodney W. Grimes.Pp 11258f0484fSRodney W. GrimesThe environment variable 11358f0484fSRodney W. Grimes.Ev TMPDIR 11458f0484fSRodney W. Grimes(if set), the argument 11558f0484fSRodney W. Grimes.Fa tmpdir 11658f0484fSRodney W. Grimes(if 11758f0484fSRodney W. Grimes.Pf non- Dv NULL ) , 11858f0484fSRodney W. Grimesthe directory 11958f0484fSRodney W. Grimes.Dv P_tmpdir , 12058f0484fSRodney W. Grimesand the directory 12158f0484fSRodney W. Grimes.Pa /tmp 12258f0484fSRodney W. Grimesare tried, in the listed order, as directories in which to store the 12358f0484fSRodney W. Grimestemporary file. 12458f0484fSRodney W. Grimes.Pp 12558f0484fSRodney W. GrimesThe argument 12658f0484fSRodney W. Grimes.Fa prefix , 12758f0484fSRodney W. Grimesif 12858f0484fSRodney W. Grimes.Pf non- Dv NULL , 12958f0484fSRodney W. Grimesis used to specify a file name prefix, which will be the 13058f0484fSRodney W. Grimesfirst part of the created file name. 1311fae73b1SRuslan ErmilovThe 1321fae73b1SRuslan Ermilov.Fn tempnam 1331fae73b1SRuslan Ermilovfunction 13458f0484fSRodney W. Grimesallocates memory in which to store the file name; the returned pointer 13558f0484fSRodney W. Grimesmay be used as a subsequent argument to 13658f0484fSRodney W. Grimes.Xr free 3 . 13758f0484fSRodney W. Grimes.Sh RETURN VALUES 13858f0484fSRodney W. GrimesThe 13958f0484fSRodney W. Grimes.Fn tmpfile 14058f0484fSRodney W. Grimesfunction 14158f0484fSRodney W. Grimesreturns a pointer to an open file stream on success, and a 14258f0484fSRodney W. Grimes.Dv NULL 14358f0484fSRodney W. Grimespointer 14458f0484fSRodney W. Grimeson error. 14558f0484fSRodney W. Grimes.Pp 14658f0484fSRodney W. GrimesThe 14758f0484fSRodney W. Grimes.Fn tmpnam 14858f0484fSRodney W. Grimesand 14958f0484fSRodney W. Grimes.Fn tempfile 15058f0484fSRodney W. Grimesfunctions 15158f0484fSRodney W. Grimesreturn a pointer to a file name on success, and a 15258f0484fSRodney W. Grimes.Dv NULL 15358f0484fSRodney W. Grimespointer 15458f0484fSRodney W. Grimeson error. 155a0490929SMaxim Konovalov.Sh ENVIRONMENT 156a0490929SMaxim Konovalov.Bl -tag -width Ds 157a0490929SMaxim Konovalov.It Ev TMPDIR 158a0490929SMaxim Konovalov.Pf [ Fn tempnam 159a0490929SMaxim Konovalovonly] 160a0490929SMaxim KonovalovIf set, 161a0490929SMaxim Konovalovthe directory in which the temporary file is stored. 162a0490929SMaxim Konovalov.Ev TMPDIR 163a0490929SMaxim Konovalovis ignored for processes 164a0490929SMaxim Konovalovfor which 165a0490929SMaxim Konovalov.Xr issetugid 2 166a0490929SMaxim Konovalovis true. 167a0490929SMaxim Konovalov.El 16824a0682cSRuslan Ermilov.Sh COMPATIBILITY 16924a0682cSRuslan ErmilovThese interfaces are provided from System V and 17024a0682cSRuslan Ermilov.Tn ANSI 17124a0682cSRuslan Ermilovcompatibility only. 17224a0682cSRuslan Ermilov.Pp 17324a0682cSRuslan ErmilovMost historic implementations of these functions provide 17424a0682cSRuslan Ermilovonly a limited number of possible temporary file names 17524a0682cSRuslan Ermilov(usually 26) 17624a0682cSRuslan Ermilovbefore file names will start being recycled. 17724a0682cSRuslan ErmilovSystem V implementations of these functions 17824a0682cSRuslan Ermilov(and of 17924a0682cSRuslan Ermilov.Xr mktemp 3 ) 18024a0682cSRuslan Ermilovuse the 18124a0682cSRuslan Ermilov.Xr access 2 18224a0682cSRuslan Ermilovsystem call to determine whether or not the temporary file 18324a0682cSRuslan Ermilovmay be created. 18424a0682cSRuslan ErmilovThis has obvious ramifications for setuid or setgid programs, 18524a0682cSRuslan Ermilovcomplicating the portable use of these interfaces in such programs. 18624a0682cSRuslan Ermilov.Pp 18724a0682cSRuslan ErmilovThe 18824a0682cSRuslan Ermilov.Fn tmpfile 18924a0682cSRuslan Ermilovinterface should not be used in software expected to be used on other systems 19024a0682cSRuslan Ermilovif there is any possibility that the user does not wish the temporary file to 19124a0682cSRuslan Ermilovbe publicly readable and writable. 19258f0484fSRodney W. Grimes.Sh ERRORS 19358f0484fSRodney W. GrimesThe 19458f0484fSRodney W. Grimes.Fn tmpfile 19558f0484fSRodney W. Grimesfunction 19658f0484fSRodney W. Grimesmay fail and set the global variable 19758f0484fSRodney W. Grimes.Va errno 19858f0484fSRodney W. Grimesfor any of the errors specified for the library functions 19958f0484fSRodney W. Grimes.Xr fdopen 3 20058f0484fSRodney W. Grimesor 20158f0484fSRodney W. Grimes.Xr mkstemp 3 . 20258f0484fSRodney W. Grimes.Pp 20358f0484fSRodney W. GrimesThe 20458f0484fSRodney W. Grimes.Fn tmpnam 20558f0484fSRodney W. Grimesfunction 20658f0484fSRodney W. Grimesmay fail and set 20758f0484fSRodney W. Grimes.Va errno 20858f0484fSRodney W. Grimesfor any of the errors specified for the library function 20958f0484fSRodney W. Grimes.Xr mktemp 3 . 21058f0484fSRodney W. Grimes.Pp 21158f0484fSRodney W. GrimesThe 21258f0484fSRodney W. Grimes.Fn tempnam 21358f0484fSRodney W. Grimesfunction 21458f0484fSRodney W. Grimesmay fail and set 21558f0484fSRodney W. Grimes.Va errno 21658f0484fSRodney W. Grimesfor any of the errors specified for the library functions 21758f0484fSRodney W. Grimes.Xr malloc 3 21858f0484fSRodney W. Grimesor 21958f0484fSRodney W. Grimes.Xr mktemp 3 . 2200afc94c1SUlrich Spörlein.Sh SEE ALSO 2210afc94c1SUlrich Spörlein.Xr mkstemp 3 , 2220afc94c1SUlrich Spörlein.Xr mktemp 3 2230afc94c1SUlrich Spörlein.Sh STANDARDS 2240afc94c1SUlrich SpörleinThe 2250afc94c1SUlrich Spörlein.Fn tmpfile 2260afc94c1SUlrich Spörleinand 2270afc94c1SUlrich Spörlein.Fn tmpnam 2280afc94c1SUlrich Spörleinfunctions 2290afc94c1SUlrich Spörleinconform to 2300afc94c1SUlrich Spörlein.St -isoC . 231e125c135SChris Costello.Sh SECURITY CONSIDERATIONS 232e125c135SChris CostelloThe 233e125c135SChris Costello.Fn tmpnam 234e125c135SChris Costelloand 235e125c135SChris Costello.Fn tempnam 2366ba681a1SChris Costellofunctions are susceptible to a race condition 23714243126SMike Pritchardoccurring between the selection of the file name 2386ba681a1SChris Costelloand the creation of the file, 239e125c135SChris Costellowhich allows malicious users 240e125c135SChris Costelloto potentially overwrite arbitrary files in the system, 241e125c135SChris Costellodepending on the level of privilege of the running program. 2426ba681a1SChris CostelloAdditionally, there is no means by which 2436ba681a1SChris Costellofile permissions may be specified. 244e125c135SChris CostelloIt is strongly suggested that 245e125c135SChris Costello.Xr mkstemp 3 246e125c135SChris Costellobe used in place of these functions. 247