Portál AbcLinuxu, 14. listopadu 2025 16:13
Řešení dotazu:
pokud by uživatel do daného místa připojil jiný filesystém
Pokud necháváte uživatele mountovat, co se jim zlíbí a hlavně kam se jim zlíbí, tak to je samo o sobě bezpečnostní problém.
smazal bych úplně jiný soubor
Když budete mít jako pracovní adresář ten, ve kterém je příslušná adresářová položka, a syscallu unlink() předáte samotné jméno (bez cesty), tak ne.
Pokud necháváte uživatele mountovat, co se jim zlíbí a hlavně kam se jim zlíbí, tak to je samo o sobě bezpečnostní problém.Měla by to být knihovna, těžko ovlivním, co se pak bude dít na cílovém systému a s něčím takovým musím počítat.
Když budete mít jako pracovní adresář ten, ve kterém je příslušná adresářová položka, a syscallu unlink() předáte samotné jméno (bez cesty), tak ne.Pracovní adresář je bohužel nepoužitelný, musím počítat s vícevláknovým programem.
NAME
tmpfile - create a temporary file
SYNOPSIS
#include <stdio.h>
FILE *tmpfile(void);
DESCRIPTION
The tmpfile() function opens a unique temporary file in binary
read/write (w+b) mode. The file will be automatically deleted when it
is closed or the program terminates.
FILE *
tmpfile (void)
{
char buf[FILENAME_MAX];
int fd;
FILE *f;
if (__path_search (buf, FILENAME_MAX, NULL, "tmpf", 0))
return NULL;
int flags = 0;
#ifdef FLAGS
flags = FLAGS;
#endif
fd = __gen_tempname (buf, 0, flags, __GT_FILE);
if (fd < 0)
return NULL;
/* Note that this relies on the Unix semantics that
a file is not really removed until it is closed. */
(void) __unlink (buf);
if ((f = __fdopen (fd, "w+b")) == NULL)
__close (fd);
return f;
}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.