Все знают, что функция memcpy() небезопасна. Наконец-то делаются правильные шаги и в скором времени эта функция будет запрещена (depricated). Однако, не стоит ждать новых компиляторов, приучать себя не использовать эту функцию можно уже сегодня.
#pragma deprecated (memcpy, RtlCopyMemory, CopyMemory)
Достаточно внести вышеуказанный код в общий заголовок, тогда компилятор будет писать так:
warning C4995: ‘memcpy’: name was marked as #pragma deprecated
Вместо небезопасной memcpy необходимо использовать memcpy_s(), которая принимает на один параметр больше, а именно размер выходного буфера.
Блджад, какие ещё правильные шаги?! Можно не то что с memcpy, даже с strcpy/strcat нормальный секурный код писать, дело в программисте а не в функциях. Подобные меры — вопиющий идиотизм, который реально ничего не изменит, а только добавит геммороя в плане рефакторинга старого кода.
Не, ты неправ. Дело все в том, что некоторая часть программистов не задумывается о секурности кода совсем. Поэтому если компилятор будет напоминать, то не вижу в этом ничего плохого. Рефакторинг старого кода проводится элементарной заменой функции и добавлением одного параметра, не так уж и сложно. Плюс появляется возможность перепроверить свой же код. Даже «крутые дядьки» ошибаются и оставляют дыры в продуктах и сплоиты к ним — это дело времени.
Я давно пересел на использование только safe-функций, ну в большинстве своем :)
Я давно пересел на использование только safe-функций, ну в большинстве своем :)
Неужели и сложение-умножение на переполнение почти всегда проверяете? Обычно почти всегда все-таки лень ;-)
Нет конечно :)
Мое имхо заключается в том, что проверку на наличие навыков написания корректного и безопасного кода, нужно проверять еще на стадии приема на работу, пусть хотя бы даже на самые минимальные и стремление это узнать и научиться.
Когда год назад писал свой первый статический распаковщик на PE-Pack 1.0, то мой коллега Санька нашел уйму самплов на которых мой анпакер отвалился, просмотрел и в сомнительных местах по задавал вопросы.
Думаю так и надо поступать, проверять не только «безопасника», а любого программиста без разбору!
Это все, конечно, здорово, но на собеседовании мало что успеваешь проверить. Стиль программирования выясняется через некоторое время после того как человек уже втянулся в работу. А его знания еще позже. Пытаться проверять обязательно надо, например, домашними заданиями, т.е. проводить собеседование в несколько этапов.
Мда .. Согласен с товарищами отписавшимися выше.
Ну сделали мы варнинг на memcpy, и что дальше? Если судить таким образом, то нужно запретить половину всех сущесвтвующих функций, ибо реализовать утечку памяти или удаление «не своей» памяти (ошибочный адрес) можно без проблем и при помощи кривых рук, а не «опасных функций».
Я считаю, что нужно либо учиться программировать нормально, либо не программировать вообще.