The memcpy() function has been recommended to be banned and will most likely enter Microsoft’s SDL Banned list later this year. memcpy() joins the ranks of other popular functions like strcpy, strncpy, strcat, strncat which were banned due to their security vulnerability through buffer overruns.
S>The memcpy() function has been recommended to be banned and will most likely enter Microsoft’s SDL Banned list later this year. memcpy() joins the ranks of other popular functions like strcpy, strncpy, strcat, strncat which were banned due to their security vulnerability through buffer overruns.
S>The memcpy() function has been recommended to be banned and will most likely enter Microsoft’s SDL Banned list later this year. memcpy() joins the ranks of other popular functions like strcpy, strncpy, strcat, strncat which were banned due to their security vulnerability through buffer overruns.
Здравствуйте, rus blood, Вы писали:
RB>Святое — это memset. RB>memset — это наше все!
Давно memset не использовал. Инициализировать нулём предпочитаю через = {0} по возможности. Другие варианты использования редки. А вот memcpy и даже memmove — использую.
S>The memcpy() function has been recommended to be banned and will most likely enter Microsoft’s SDL Banned list later this year. memcpy() joins the ranks of other popular functions like strcpy, strncpy, strcat, strncat which were banned due to their security vulnerability through buffer overruns.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Хороший вопрос. С одной стороны, memmove_s, как и memcpy_s уже есть (смотрю в VS2005). C другой — плохо себе представляю, как она может помочь при типичном случае перемещения "вперёд" в том же буфере.
С третьей — наверное, "маразматики" банят функции по количеству и серьёзности багов. Так тут memmove не догонит memcpy. Во-первых реже нужно копировать в тот же буфер, во-вторых, разработчик более внимателен при таком копировании.
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, Sorantis, Вы писали:
S>>список баннд функций.
S>># pragma deprecated (strlen, wcslen, _mbslen, _mbstrlen, StrLen, lstrlen)
AG>Вот это я хочу видеть, как выстрелить себе в ногу через strlen
Ну это только майкрософт так решил. Стандартом не запрещено юзать strlen.
А причина запрета МС заключается в том что strlen никогда не завершится (до тех пор пока не встретим access violation) если не найден '\0' . Потому и deprecated.
Здравствуйте, Alexander G, Вы писали:
AG>Вот это я хочу видеть, как выстрелить себе в ногу через strlen
а мне интересно, в каком их коде определен макрос __GNUC__
Здравствуйте, Vamp, Вы писали:
V>Маразм силен. Кроме того, не понимаю, чем strcpy_s лучше strncpy.
это просто разные вещи, strncpy — копируемая строка не влезла в целевой буфер? ну и пофиг, идем дальше; strcpy_s — копируемая строка не влезла в целевой буфер? тушим свет и сливаем воду
S>The memcpy() function has been recommended to be banned and will most likely enter Microsoft’s SDL Banned list later this year. memcpy() joins the ranks of other popular functions like strcpy, strncpy, strcat, strncat which were banned due to their security vulnerability through buffer overruns.
Феерические идиоты!
Надо им внести предложение забанить ассемблерную команду MOV ибо она потенциально опасна.
И шоп новая версия винды при обнаружении в исполняемом файле программы этой жуткой опасной инструкции отказывалась бы его выполнять.
Здравствуйте, Sorantis, Вы писали:
S>А причина запрета МС заключается в том что strlen никогда не завершится (до тех пор пока не встретим access violation) если не найден '\0' . Потому и deprecated.
Не, это не то. Покажите запись за границу буфера через strlen. И секьюрную альтернативу strlen.