Portál AbcLinuxu, 7. května 2025 12:33
Ř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.