Я пытаюсь написать код C, который использует некоторые переменные ENV в среде UNIX. Возникает вопрос: может ли чтение переменных (например, getenv()) вызвать переполнение буфера? Кроме того, как я могу найти предел размера переменной env для моей платформы? Например, какой заголовочный файл?
Наконец, каковы самые безопасные методы чтения кода, предоставленные средой?
getenv
должен позаботиться об этом сам. - person dmckee --- ex-moderator kitten   schedule 23.02.2013getenv()
, что не соответствует ожиданиям большинства людей (и в системах Unix это не является проблемой). . Итак, строго говоря, вам нужно сделать копию любой переменной среды, возвращаемойgetenv()
, прежде чем снова вызыватьgetenv()
. Нет заголовка, который напрямую определяет ограничение на размер имен или значений env var. В POSIX ограничениеARG_MAX
(которое часто составляет 256 КиБ) представляет собой общий размер «среды плюс аргументы», но это довольно большой и не всегда жесткий предел. - person Jonathan Leffler   schedule 23.02.2013