![]() |
scanf buffer overflow
Все говорят что функция scanf подверженна возможному переполнению стека или кучи. Есть и куча примеров которые наглядно показывают в чем и где проблема.
Все примеры относяся к scanf(%s, s). и нигде ничего не написано про scanf(%x). Есть ли в функции scanf с параметром %x возможность переполнения стека? Не могу найти информацию вообще, может кто-то на форуме знает? Спасибо |
Насколько я понимаю, переполнение буфера возможно только в том случае когда заранее его размер неизвестен(как в scanf(%s, s)). при использовании scanf(%x) размер ввода известен и переполения буфера поидеее не должно быть.
|
Возможно переполнение, например:
short int c;// 2 байта scanf("%d",&c); Читает число с клавы и записывает в слово(4 байта) по адресу с. Но это может не сказатся плохо, при исользовании выравнивания по слову |
Предыдущий пример демонстрирует ошибку прогаммиста а не ошибку переполнения буфера. Предыдущий пример всегда будет приводить к ошибке (если конечно отключено выравнивание), а ошибки переполнения буфера при вводе корректных данных работают нормально , поэтому они значительно более неприятны.
|
| Часовой пояс GMT +4, время: 11:33. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.