|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alex Semenyaka 2:461/640.640 12 Aug 2007 18:50:02 To : Eugene Grosbein Subject : softupdates на / --------------------------------------------------------------------------------
11 Aug 07 18:03, you wrote to All:
Оставляю только существенное:
EG> + char of_outFile[PATH_MAX];
EG> + char tfile[PATH_MAX];
EG> + char *tdir;
EG> + if ( (tdir = getenv("TMPDIR")) == NULL )
EG> + tdir = "/tmp";
EG> + snprintf(tfile, sizeof(tfile), "%s/%s", tdir, TMPPAT);
"ENV01-A. Do not make assumptions about the size of an environment variable"
(https://www.securecoding.cert.org/confluence/display/seccode/ENV01-A.+Do+not+m
ake+assumptions+about+the+size+of+an+environment+variable).
Hе стоит, чесслово, завязываться на PATH_MAX, потому что пусть на деле может
оказаться и больше, причём получаться он будет как
cd long/path
export TMPDIR=`pwd`
(обрати внимание, в cd используется относительный путь, который короче
PATH_MAX).
Оно, конечно, не критично в данном случае, но лучше всё же, по-моему, кодить
без завязки на эту константу. А то и так граблей из-за статического
аллоцирования переменных под путь - разложено предостаточно.
В данном случае - вместо tfile[] заведи указатель; получив длину tdir,
посчитай, сколько тебе нужно; выдели память под содержимое tfile. Остальное,
разумеется, без изменений.
Alex
--- IMHO в последней инстанции
* Origin: ...можжевеловых... (2:461/640.640)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/392946bf2dcf.html, оценка из 5, голосов 10
|