Кстати, строковые функции, которые используются при склеивании строк библиотекой system (LStrCat) сам разработчик ОС не рекомендует использовать категорически ссылаясь на то, что работают они часто через стек и используют устаревший и очень опасный метод работы с пределами данных - самостоятельный перехват ошибок доступа к памяти. Причём обрабатывают ошибки молча, например, при нехватке буфера функция возвратит кусок недоделанной строки без маркера конца. В итоге, наше приложение, читая, скажем, название раздела, доходит до конца буфера, пытается читать дальше и система его убивает за попытку доступа к чему не положено. А при записи ещё серьёзнее т.к. за строкой (которая часто лежит на стеке) могут быть важные данные и адреса возврата. То есть опять же получаем вылет по DEP или доступу к недопустимым адресам памяти. Так что не все ошибки в наших силах предугадать иили исправить, многие потенциально опасные места заложены там, где их совсем не ждут.
Ответов: 3889
Рейтинг: 362
|
|||
карма: 1 |
|