Форум программистов, компьютерный форум CyberForum.ru

Почему функция gets опасная? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отредактировать текст так, чтобы между словами был ровно один пробел http://www.cyberforum.ru/cpp/thread77794.html
помогите решить задачу. Дан произвольный текст.Отредактировать его так,чтобы: а)Между словами был ровно 1 пробел; б)предложения в тексте разделялись 2 пробелами задачу нужно решить на Borland C
C++ Дана матрица, посчитать в ней количество локальных минимумов нужна помощь в этой программе///// Дана матрица, посчитать в ней количество локальных минимумов. Буду очень благодарен. И нужно её написать на языке С. http://www.cyberforum.ru/cpp/thread77682.html
C++ Программа находит макс. номер в файле...
Написал программу с классами fstream, которая в определенном файле находит мин. номер и макс. номер. (в файле - только целочисленные номера) Минимальный номер находит правильно, но вместо максимального - всегда последний в файле. В чем же дело? Функция нахождения максимального номера: int FindMax(fstream &File) { char ch;
C++ Размерные величины
Хочу сделать классы для работы с размерными величинами (то есть сразу с указанием единицы измерения). Если кто хочет присоединиться, объявляйте подъобласть и будем меняться исходниками. Можете также добавлять наименования величин к списку: 1. Длина. Length. 2. Площадь. Area. 3. Объём. 4. Время. Time. 5. Скорость. Speed. 6. Ускорение. 7. Напряжение. 8. Сила тока. 9. Электрическое...
C++ unresolved external http://www.cyberforum.ru/cpp/thread77481.html
Имеется сольюшн из 3х файлов: List.h: #include "stdafx.h" #ifndef _LIST_H_ #define _LIST_H_ template <class X> class List { class Node {
C++ Написать программу, подсчитывающую, сколько можно набрать различных семизначных «шахматных» номеров... Условие: Телефонный номер называется «шахматным», если его цифры набираются на телефонном кнопочном номеронабирателе ходом шахматного коня. Написать программу, подсчитывающую, сколько можно набрать различных семизначных «шахматных» номеров, начинающихся с заданной цифры. 123 456 789 0 ПРограмма должна выводить полученый номер на экран и в файл output.txt подробнее

Показать сообщение отдельно
0PP0$1T3
5 / 5 / 1
Регистрация: 21.12.2009
Сообщений: 6
22.12.2009, 00:20     Почему функция gets опасная?
char *gets(char *); <- это прототип функции, видите, нигде не задан размер вводимой строки, поэтому, можно легко получить ошибку (при наличии некоторых знаний легко приводимую к хакерской атаке) преполения буфера, например:
C++
1
2
3
4
5
void main()
{
   char  _Str[100];
   gets(_Str);
}
что будет, если я введу 101 символ? а будет вот что: уже после выделенной памяти под строку в стеке запишется последний сивол, что приведёт к порче слкдующих за строкой данных, а если строка в стеке последняя, тогда сивол затрёт IP - (не путать с адресом) instruction pointer - адрес, куда передать управдение после работы функции, на этом и основана хакерская атака - затереть IP таким образом, чтобы управление перешло по нужному хакеру адресу, где и выполнится вредоносный код
 
Текущее время: 16:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru