EnglishFrenchGermanItalianPortugueseSpanish

Умри memcpy

Все знают, что функция memcpy() небезопасна. Наконец-то делаются правильные шаги и в скором времени эта функция будет запрещена (depricated). Однако, не стоит ждать новых компиляторов, приучать себя не использовать эту функцию можно уже сегодня.

#pragma deprecated (memcpy, RtlCopyMemory, CopyMemory)

Достаточно внести вышеуказанный код в общий заголовок, тогда компилятор будет писать так:

warning C4995: ‘memcpy’: name was marked as #pragma deprecated

Вместо небезопасной memcpy необходимо использовать memcpy_s(), которая принимает на один параметр больше, а именно размер выходного буфера.

Оригинал

Читайте также:

Share

7 comments to Умри memcpy

  • Ск4ыр

    Блджад, какие ещё правильные шаги?! Можно не то что с memcpy, даже с strcpy/strcat нормальный секурный код писать, дело в программисте а не в функциях. Подобные меры — вопиющий идиотизм, который реально ничего не изменит, а только добавит геммороя в плане рефакторинга старого кода.

    • SWW

      Не, ты неправ. Дело все в том, что некоторая часть программистов не задумывается о секурности кода совсем. Поэтому если компилятор будет напоминать, то не вижу в этом ничего плохого. Рефакторинг старого кода проводится элементарной заменой функции и добавлением одного параметра, не так уж и сложно. Плюс появляется возможность перепроверить свой же код. Даже «крутые дядьки» ошибаются и оставляют дыры в продуктах и сплоиты к ним — это дело времени.

      Я давно пересел на использование только safe-функций, ну в большинстве своем :)

      • peeplevarreh

        Я давно пересел на использование только safe-функций, ну в большинстве своем :)
        Неужели и сложение-умножение на переполнение почти всегда проверяете? Обычно почти всегда все-таки лень ;-)

  • Dmitry Andriyankov

    Мое имхо заключается в том, что проверку на наличие навыков написания корректного и безопасного кода, нужно проверять еще на стадии приема на работу, пусть хотя бы даже на самые минимальные и стремление это узнать и научиться.
    Когда год назад писал свой первый статический распаковщик на PE-Pack 1.0, то мой коллега Санька нашел уйму самплов на которых мой анпакер отвалился, просмотрел и в сомнительных местах по задавал вопросы.

    Думаю так и надо поступать, проверять не только «безопасника», а любого программиста без разбору!

    • SWW

      Это все, конечно, здорово, но на собеседовании мало что успеваешь проверить. Стиль программирования выясняется через некоторое время после того как человек уже втянулся в работу. А его знания еще позже. Пытаться проверять обязательно надо, например, домашними заданиями, т.е. проводить собеседование в несколько этапов.

  • Женёк

    Мда .. Согласен с товарищами отписавшимися выше.
    Ну сделали мы варнинг на memcpy, и что дальше? Если судить таким образом, то нужно запретить половину всех сущесвтвующих функций, ибо реализовать утечку памяти или удаление «не своей» памяти (ошибочный адрес) можно без проблем и при помощи кривых рук, а не «опасных функций».
    Я считаю, что нужно либо учиться программировать нормально, либо не программировать вообще.

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">