Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Во-первых, самая распространенная ошибка для программистов на С/ 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!