Страницы

Поиск по вопросам

понедельник, 17 июня 2019 г.

Какое влияние на приложение оказывает проверка безопасности (\GS)?

Дано: сетевое приложение, в процессе обмена сетевыми пакетами ошибка может возникнуть где угодно (сбой, неверный ответ от сервера и т.д.).
Пояснение: Переодически выбивало в разных местах кода исключение о переполнении стека или нарушение прав доступа при чтении по адресу..., причем блоки try\catch не помогали. В опциях студии по умолчанию была включена проверка безопасности (\GS), отключил ее и приложение начало работать стабильно (по крайней мере на первый взгляд).
Вопрос: какими последствиями черевато отключение проверки безопасности (\GS) кроме риска взлома приложения?


Ответ

Ключ Visual Studio /GS защищает от переполнения буфера в стеке. Если отключение этого ключа приводит к изменению поведения программы, значит, в программе собственно и присутствует срыв стека и запись по адресу «на кого бог пошлёт».
Переполнение буфера есть undefined behaviour, следовательно, случиться может что угодно. Не пытайтесь заткнуть сообщение об ошибке, код проекта серьёзно болен, нужно исправлять баги.

Комментариев нет:

Отправить комментарий