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. 16fbbd9655SWarner 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.\" 32*1f325602SGordon Bergling.Dd August 7, 2020 3358f0484fSRodney W. Grimes.Dt TMPFILE 3 3458f0484fSRodney W. Grimes.Os 3558f0484fSRodney W. Grimes.Sh NAME 3658f0484fSRodney W. Grimes.Nm tempnam , 3758f0484fSRodney W. Grimes.Nm tmpfile , 3858f0484fSRodney W. Grimes.Nm tmpnam 3958f0484fSRodney W. Grimes.Nd temporary file routines 4025bb73e0SAlexey Zelkin.Sh LIBRARY 4125bb73e0SAlexey Zelkin.Lb libc 4258f0484fSRodney W. Grimes.Sh SYNOPSIS 4332eef9aeSRuslan Ermilov.In stdio.h 4458f0484fSRodney W. Grimes.Ft FILE * 4558f0484fSRodney W. Grimes.Fn tmpfile void 4658f0484fSRodney W. Grimes.Ft char * 4758f0484fSRodney W. Grimes.Fn tmpnam "char *str" 4858f0484fSRodney W. Grimes.Ft char * 4958f0484fSRodney W. Grimes.Fn tempnam "const char *tmpdir" "const char *prefix" 5058f0484fSRodney W. Grimes.Sh DESCRIPTION 5158f0484fSRodney W. GrimesThe 5258f0484fSRodney W. Grimes.Fn tmpfile 5358f0484fSRodney W. Grimesfunction 5458f0484fSRodney W. Grimesreturns a pointer to a stream associated with a file descriptor returned 5558f0484fSRodney W. Grimesby the routine 5658f0484fSRodney W. Grimes.Xr mkstemp 3 . 5758f0484fSRodney W. GrimesThe created file is unlinked before 5858f0484fSRodney W. Grimes.Fn tmpfile 5958f0484fSRodney W. Grimesreturns, causing the file to be automatically deleted when the last 6058f0484fSRodney W. Grimesreference to it is closed. 6158f0484fSRodney W. GrimesThe file is opened with the access value 6258f0484fSRodney W. Grimes.Ql w+ . 630bada860SMike HeffnerThe file is created in the directory determined by the environment variable 640bada860SMike Heffner.Ev TMPDIR 650bada860SMike Heffnerif set. 660bada860SMike HeffnerThe default location if 670bada860SMike Heffner.Ev TMPDIR 680bada860SMike Heffneris not set is 690bada860SMike Heffner.Pa /tmp . 7058f0484fSRodney W. Grimes.Pp 7158f0484fSRodney W. GrimesThe 7258f0484fSRodney W. Grimes.Fn tmpnam 7358f0484fSRodney W. Grimesfunction 7458f0484fSRodney W. Grimesreturns a pointer to a file name, in the 7558f0484fSRodney W. Grimes.Dv P_tmpdir 7658f0484fSRodney W. Grimesdirectory, which 7758f0484fSRodney W. Grimesdid not reference an existing file at some indeterminate point in the 7858f0484fSRodney W. Grimespast. 7958f0484fSRodney W. Grimes.Dv P_tmpdir 8058f0484fSRodney W. Grimesis defined in the include file 81fe08efe6SRuslan Ermilov.In stdio.h . 8258f0484fSRodney W. GrimesIf the argument 833076db19SKris Kennaway.Fa str 8458f0484fSRodney W. Grimesis 8558f0484fSRodney W. Grimes.Pf non- Dv NULL , 8658f0484fSRodney W. Grimesthe file name is copied to the buffer it references. 8758f0484fSRodney W. GrimesOtherwise, the file name is copied to a static buffer. 8858f0484fSRodney W. GrimesIn either case, 8958f0484fSRodney W. Grimes.Fn tmpnam 9058f0484fSRodney W. Grimesreturns a pointer to the file name. 9158f0484fSRodney W. Grimes.Pp 9258f0484fSRodney W. GrimesThe buffer referenced by 933076db19SKris Kennaway.Fa str 9458f0484fSRodney W. Grimesis expected to be at least 9558f0484fSRodney W. Grimes.Dv L_tmpnam 9658f0484fSRodney W. Grimesbytes in length. 9758f0484fSRodney W. Grimes.Dv L_tmpnam 9858f0484fSRodney W. Grimesis defined in the include file 99fe08efe6SRuslan Ermilov.In stdio.h . 10058f0484fSRodney W. Grimes.Pp 10158f0484fSRodney W. GrimesThe 10258f0484fSRodney W. Grimes.Fn tempnam 10358f0484fSRodney W. Grimesfunction 10458f0484fSRodney W. Grimesis similar to 10558f0484fSRodney W. Grimes.Fn tmpnam , 10658f0484fSRodney W. Grimesbut provides the ability to specify the directory which will 10758f0484fSRodney W. Grimescontain the temporary file and the file name prefix. 10858f0484fSRodney W. Grimes.Pp 10958f0484fSRodney W. GrimesThe environment variable 11058f0484fSRodney W. Grimes.Ev TMPDIR 11158f0484fSRodney W. Grimes(if set), the argument 11258f0484fSRodney W. Grimes.Fa tmpdir 11358f0484fSRodney W. Grimes(if 11458f0484fSRodney W. Grimes.Pf non- Dv NULL ) , 11558f0484fSRodney W. Grimesthe directory 11658f0484fSRodney W. Grimes.Dv P_tmpdir , 11758f0484fSRodney W. Grimesand the directory 11858f0484fSRodney W. Grimes.Pa /tmp 11958f0484fSRodney W. Grimesare tried, in the listed order, as directories in which to store the 12058f0484fSRodney W. Grimestemporary file. 12158f0484fSRodney W. Grimes.Pp 12258f0484fSRodney W. GrimesThe argument 12358f0484fSRodney W. Grimes.Fa prefix , 12458f0484fSRodney W. Grimesif 12558f0484fSRodney W. Grimes.Pf non- Dv NULL , 12658f0484fSRodney W. Grimesis used to specify a file name prefix, which will be the 12758f0484fSRodney W. Grimesfirst part of the created file name. 1281fae73b1SRuslan ErmilovThe 1291fae73b1SRuslan Ermilov.Fn tempnam 1301fae73b1SRuslan Ermilovfunction 13158f0484fSRodney W. Grimesallocates memory in which to store the file name; the returned pointer 13258f0484fSRodney W. Grimesmay be used as a subsequent argument to 13358f0484fSRodney W. Grimes.Xr free 3 . 13458f0484fSRodney W. Grimes.Sh RETURN VALUES 13558f0484fSRodney W. GrimesThe 13658f0484fSRodney W. Grimes.Fn tmpfile 13758f0484fSRodney W. Grimesfunction 13858f0484fSRodney W. Grimesreturns a pointer to an open file stream on success, and a 13958f0484fSRodney W. Grimes.Dv NULL 14058f0484fSRodney W. Grimespointer 14158f0484fSRodney W. Grimeson error. 14258f0484fSRodney W. Grimes.Pp 14358f0484fSRodney W. GrimesThe 14458f0484fSRodney W. Grimes.Fn tmpnam 14558f0484fSRodney W. Grimesand 14658f0484fSRodney W. Grimes.Fn tempfile 14758f0484fSRodney W. Grimesfunctions 14858f0484fSRodney W. Grimesreturn a pointer to a file name on success, and a 14958f0484fSRodney W. Grimes.Dv NULL 15058f0484fSRodney W. Grimespointer 15158f0484fSRodney W. Grimeson error. 152a0490929SMaxim Konovalov.Sh ENVIRONMENT 153a0490929SMaxim Konovalov.Bl -tag -width Ds 154a0490929SMaxim Konovalov.It Ev TMPDIR 155a0490929SMaxim Konovalov.Pf [ Fn tempnam 156*1f325602SGordon Berglingand 157*1f325602SGordon Bergling.Fn tmpfile 158a0490929SMaxim Konovalovonly] 159a0490929SMaxim KonovalovIf set, 160a0490929SMaxim Konovalovthe directory in which the temporary file is stored. 161a0490929SMaxim Konovalov.Ev TMPDIR 162a0490929SMaxim Konovalovis ignored for processes 163a0490929SMaxim Konovalovfor which 164a0490929SMaxim Konovalov.Xr issetugid 2 165a0490929SMaxim Konovalovis true. 166a0490929SMaxim Konovalov.El 16724a0682cSRuslan Ermilov.Sh COMPATIBILITY 16824a0682cSRuslan ErmilovThese interfaces are provided from System V and 16924a0682cSRuslan Ermilov.Tn ANSI 17024a0682cSRuslan Ermilovcompatibility only. 17124a0682cSRuslan Ermilov.Pp 17224a0682cSRuslan ErmilovMost historic implementations of these functions provide 17324a0682cSRuslan Ermilovonly a limited number of possible temporary file names 17424a0682cSRuslan Ermilov(usually 26) 17524a0682cSRuslan Ermilovbefore file names will start being recycled. 17624a0682cSRuslan ErmilovSystem V implementations of these functions 17724a0682cSRuslan Ermilov(and of 17824a0682cSRuslan Ermilov.Xr mktemp 3 ) 17924a0682cSRuslan Ermilovuse the 18024a0682cSRuslan Ermilov.Xr access 2 18124a0682cSRuslan Ermilovsystem call to determine whether or not the temporary file 18224a0682cSRuslan Ermilovmay be created. 18324a0682cSRuslan ErmilovThis has obvious ramifications for setuid or setgid programs, 18424a0682cSRuslan Ermilovcomplicating the portable use of these interfaces in such programs. 18524a0682cSRuslan Ermilov.Pp 18624a0682cSRuslan ErmilovThe 18724a0682cSRuslan Ermilov.Fn tmpfile 18824a0682cSRuslan Ermilovinterface should not be used in software expected to be used on other systems 18924a0682cSRuslan Ermilovif there is any possibility that the user does not wish the temporary file to 19024a0682cSRuslan Ermilovbe publicly readable and writable. 19158f0484fSRodney W. Grimes.Sh ERRORS 19258f0484fSRodney W. GrimesThe 19358f0484fSRodney W. Grimes.Fn tmpfile 19458f0484fSRodney W. Grimesfunction 19558f0484fSRodney W. Grimesmay fail and set the global variable 19658f0484fSRodney W. Grimes.Va errno 19758f0484fSRodney W. Grimesfor any of the errors specified for the library functions 19858f0484fSRodney W. Grimes.Xr fdopen 3 19958f0484fSRodney W. Grimesor 20058f0484fSRodney W. Grimes.Xr mkstemp 3 . 20158f0484fSRodney W. Grimes.Pp 20258f0484fSRodney W. GrimesThe 20358f0484fSRodney W. Grimes.Fn tmpnam 20458f0484fSRodney W. Grimesfunction 20558f0484fSRodney W. Grimesmay fail and set 20658f0484fSRodney W. Grimes.Va errno 20758f0484fSRodney W. Grimesfor any of the errors specified for the library function 20858f0484fSRodney W. Grimes.Xr mktemp 3 . 20958f0484fSRodney W. Grimes.Pp 21058f0484fSRodney W. GrimesThe 21158f0484fSRodney W. Grimes.Fn tempnam 21258f0484fSRodney W. Grimesfunction 21358f0484fSRodney W. Grimesmay fail and set 21458f0484fSRodney W. Grimes.Va errno 21558f0484fSRodney W. Grimesfor any of the errors specified for the library functions 21658f0484fSRodney W. Grimes.Xr malloc 3 21758f0484fSRodney W. Grimesor 21858f0484fSRodney W. Grimes.Xr mktemp 3 . 2190afc94c1SUlrich Spörlein.Sh SEE ALSO 2200afc94c1SUlrich Spörlein.Xr mkstemp 3 , 2210afc94c1SUlrich Spörlein.Xr mktemp 3 2220afc94c1SUlrich Spörlein.Sh STANDARDS 2230afc94c1SUlrich SpörleinThe 2240afc94c1SUlrich Spörlein.Fn tmpfile 2250afc94c1SUlrich Spörleinand 2260afc94c1SUlrich Spörlein.Fn tmpnam 2270afc94c1SUlrich Spörleinfunctions 2280afc94c1SUlrich Spörleinconform to 2290afc94c1SUlrich Spörlein.St -isoC . 230e125c135SChris Costello.Sh SECURITY CONSIDERATIONS 231e125c135SChris CostelloThe 232e125c135SChris Costello.Fn tmpnam 233e125c135SChris Costelloand 234e125c135SChris Costello.Fn tempnam 2356ba681a1SChris Costellofunctions are susceptible to a race condition 23614243126SMike Pritchardoccurring between the selection of the file name 2376ba681a1SChris Costelloand the creation of the file, 238e125c135SChris Costellowhich allows malicious users 239e125c135SChris Costelloto potentially overwrite arbitrary files in the system, 240e125c135SChris Costellodepending on the level of privilege of the running program. 2416ba681a1SChris CostelloAdditionally, there is no means by which 2426ba681a1SChris Costellofile permissions may be specified. 243e125c135SChris CostelloIt is strongly suggested that 244e125c135SChris Costello.Xr mkstemp 3 245e125c135SChris Costellobe used in place of these functions. 246