Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Рассуждения по большей части применимы как к компилируемым, так и к интерпретируемым программам



Во-первых, самая распространенная ошибка для программистов на С/ C++, как обычно, связана с

возможностью переполнения буфера (см. главу 9). Эта проблема особенно характерна для С/С++, поскольку

Программисту на Peri нет необходимости заботиться о ручном выделении памяти под строки.

Например, для получения данных, переданных методом POST, можно написать следующий код: char buff

[4096],

int length = atoi(getenv("CONTENT_LENGTH")); fread(buff, 1, length,

Stdin);

Возможное переполнение буфера налицо. Справиться с этой проблемой очень легко - достаточно

динамически выделить буфер требуемой длины:

Int length = atol(getenv("CONTENT_LENGTH")): char* buff = new

char[length]: lf(buff) fread(buff, 1, length, stdin);

Потенциально опасны многие строковые функции, определяющие конец строки по завершающему нулю.

Поэтому вместо функций strcpy, strcat, stremp и т. п. настоятельно рекомендуется использовать их аналоги

Strncpy, strncat, strncmp, позволяющие указать максимальное количество обрабатываемых символов.

Казалось бы, можно ограничить объем вводимой информации указанием соответствующих параметров в

Тэгах формы, но это еще одно очень опасное заблуждение, которого мы коснемся чуть позже.

Возможно, именно из-за необходимости постоянно контролировать размер буфера многие начинающие (и не





Дата публикования: 2014-11-04; Прочитано: 315 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...