Pregunta

Qué necesito para utilizar la función tmpnam en C ++, pero necesito saber acerca de su seguridad hilo. Es decir, si tengo varios hilos que se necesitan cada uno para adquirir un nombre diferente para un archivo temporal, me garantiza que cada hilo recibirá un archivo con un nombre diferente?

¿Fue útil?

Solución

tmpnam sólo garantiza que el archivo no existía en el momento - pero puede ser creado antes de que pueda hacerlo por sí mismo. Para usarlo de manera segura, se necesita siempre a continuación, intente crear el archivo con abierta (nombre de archivo, O_CREAT | O_EXCL | O_NOFOLLOW). Si esto no funciona debido a EEXIST o ELOOP, volver y probar un nuevo nombre.

Esto es particularmente importante para proteger contra ataques de enlace simbólico, donde otro programa crea un enlace simbólico de su nombre de archivo temporal en / etc / passwd o algún otro archivo importante.

Además, asegúrese de que no pasa NULL para tmpnam, como el tampón utilizado a continuación es el mismo para todos los temas.

Otro enfoque que combina éstos es utilizar mkstemp () o mkostemp (), que creará el archivo de seguridad para usted.

Por último, si usted no necesita el nombre del archivo, puede utilizar tmpfile (), lo que creará un archivo temporal que se eliminará en una estrecha.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top