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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.77
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
#1

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

22.12.2009, 00:01. Просмотров 3827. Ответов 2
Метки нет (Все метки)

Компилирую программу с помощью G++,
и компилятор пишет:

C++
1
warning: the `gets' function is dangerous and should not be used.
Но почему?

И если опасна, то приведите, пожалуйста, код, где она действительно может чего-нибудь плохого натворить...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2009, 00:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему функция gets опасная? (C++):

Почему функция seekp() работает только с классом ostringstream и не хочет использоваться с ofstream - C++
Всем привет! Уважаемые программисты, подскажите пожалуйста, почему функция seekp() работает только с классом ostringstream и никак не...

Почему функция WinExec не запускает текстовый файл? - C++ Builder
Здравствуйте! Почему функция WinExec не запускает текстовый файл? void __fastcall TForm1::Button1Click(TObject *Sender) { ...

Почему не работает функция MoveFile? - C++ WinAPI
Долго искал в хелпах, как переименовывать файлы, но результатов ноль. Оказалось, что с файлами в visual c++ можно делать все что угодно,...

Почему функция, обрабатывающая хуки, должна быть в dll? - C++ WinAPI
насколько я знаю, если ставишь глобальные хуки, нужно делать так, чтобы функция, обрабатывающая хуки, бралась из dll. Но только почему,...

Почему не работает функция? - C++
Почему не работает функция? Пишет ошибку: результатом выполнения фрагмента не является 0 аргумеетов int provPas() { string...

почему не работает функция? - C++
#include <iostream> #include <conio.h> void function (int k)// { for(int i=0;i<k;i++) std::cout<<"*"; } int...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0PP0$1T3
5 / 5 / 1
Регистрация: 21.12.2009
Сообщений: 6
22.12.2009, 00:20 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
char *gets(char *); <- это прототип функции, видите, нигде не задан размер вводимой строки, поэтому, можно легко получить ошибку (при наличии некоторых знаний легко приводимую к хакерской атаке) преполения буфера, например:
C++
1
2
3
4
5
void main()
{
   char  _Str[100];
   gets(_Str);
}
что будет, если я введу 101 символ? а будет вот что: уже после выделенной памяти под строку в стеке запишется последний сивол, что приведёт к порче слкдующих за строкой данных, а если строка в стеке последняя, тогда сивол затрёт IP - (не путать с адресом) instruction pointer - адрес, куда передать управдение после работы функции, на этом и основана хакерская атака - затереть IP таким образом, чтобы управление перешло по нужному хакеру адресу, где и выполнится вредоносный код
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
22.12.2009, 00:30  [ТС] #3
>> 0PP0$1T3

Круто. Теперь есть, чем заняться...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2009, 00:30
Привет! Вот еще темы с ответами:

Почему-то на работает функция!( - C++
Задача написать функцию, упорядочивающую массив по возрастанию. почему-то не работает((( #include &quot;stdio.h&quot; int FUNC_Vozr (int...

Gets опасная функция - C (СИ)
При компиляции gcc выдает ошибку: the gets function is dangerous and should not be used. Как ее убрать?

особо опасная прога - Delphi
Доработал одну из программ, выложенных на форуме о блокировке клавиатуры...клавиатура блокируется не по кнопке, а сразу же с момента...

Опасная ошибка запроса в Delphi - Delphi БД
Ребята, прошу помощи. У меня есть access база с тремя запросами, один из них кое-как работает, он в дбгриде мне вместо имени показывает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru