[ANN] memcpy() banned
От: Sorantis Швеция  
Дата: 21.05.09 15:56
Оценка: +1 :))) :)))

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.


здесь
As long as there is life, there is hope
Re: [ANN] memcpy() banned
От: Шахтер Интернет  
Дата: 21.05.09 16:04
Оценка: 1 (1) +4 -3
Здравствуйте, Sorantis, Вы писали:


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.


S>здесь


Маразм крепчает.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re: [ANN] memcpy() banned
От: R.O. Prokopiev Россия http://127.0.0.1/
Дата: 21.05.09 17:02
Оценка: :)))
Здравствуйте, Sorantis, Вы писали:


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.

S>здесь

Ничего святого для них нет. Изверги
Re[2]: [ANN] memcpy() banned
От: rus blood Россия  
Дата: 21.05.09 17:29
Оценка:
Здравствуйте, R.O. Prokopiev, Вы писали:

ROP>Ничего святого для них нет. Изверги




Святое — это memset.
memset — это наше все!

А memcpy не жалко...
Имею скафандр — готов путешествовать!
Re: [ANN] memcpy() banned
От: Vamp Россия  
Дата: 21.05.09 18:30
Оценка:
Маразм силен. Кроме того, не понимаю, чем strcpy_s лучше strncpy.
Да здравствует мыло душистое и веревка пушистая.
Re[2]: [ANN] memcpy() banned
От: shrecher  
Дата: 21.05.09 18:33
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Маразм силен. Кроме того, не понимаю, чем strcpy_s лучше strncpy.


Для Microsoft лучше, т.к. создает видимость борьбы за секурити в коде, а у самих там такое ...
Re[3]: [ANN] memcpy() banned
От: Alexander G Украина  
Дата: 21.05.09 18:57
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Святое — это memset.

RB>memset — это наше все!

Давно memset не использовал. Инициализировать нулём предпочитаю через = {0} по возможности. Другие варианты использования редки. А вот memcpy и даже memmove — использую.
Русский военный корабль идёт ко дну!
Re: А memmove?
От: Erop Россия  
Дата: 21.05.09 19:28
Оценка:
Здравствуйте, Sorantis, Вы писали:


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.

Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: А memmove?
От: Alexander G Украина  
Дата: 21.05.09 19:39
Оценка:
Здравствуйте, Erop,

Хороший вопрос. С одной стороны, memmove_s, как и memcpy_s уже есть (смотрю в VS2005). C другой — плохо себе представляю, как она может помочь при типичном случае перемещения "вперёд" в том же буфере.

С третьей — наверное, "маразматики" банят функции по количеству и серьёзности багов. Так тут memmove не догонит memcpy. Во-первых реже нужно копировать в тот же буфер, во-вторых, разработчик более внимателен при таком копировании.
Русский военный корабль идёт ко дну!
Re[3]: А memmove?
От: Sorantis Швеция  
Дата: 21.05.09 19:53
Оценка: 17 (2)
список баннд функций.

/***
* banned.h - list of Microsoft Security Development Lifecycle banned APIs
*
* Purpose:
*       This include file contains a list of banned API which should not be used in new code and 
*       removed from legacy code over time
* History
* 01-Jan-2006 - mikehow - Initial Version
* 22-Apr-2008 - mikehow    - Updated to SDL 4.1, commented out recommendations and added memcpy
*
***/

#ifndef _INC_BANNED
#    define _INC_BANNED
#endif

#ifdef _MSC_VER
// Some of these functions are Windows specific
#    pragma once
#    pragma deprecated (strcpy, strcpyA, strcpyW, wcscpy, _tcscpy, _mbscpy, StrCpy, StrCpyA, StrCpyW, lstrcpy, lstrcpyA, lstrcpyW, _tccpy, _mbccpy)
#    pragma deprecated (strcat, strcatA, strcatW, wcscat, _tcscat, _mbscat, StrCat, StrCatA, StrCatW, lstrcat, lstrcatA, lstrcatW, StrCatBuff, StrCatBuffA, StrCatBuffW, StrCatChainW, _tccat, _mbccat)
#    pragma deprecated (wnsprintf, wnsprintfA, wnsprintfW, sprintfW, sprintfA, wsprintf, wsprintfW, wsprintfA, sprintf, swprintf, _stprintf, _snwprintf, _snprintf, _sntprintf)
#    pragma deprecated (wvsprintf, wvsprintfA, wvsprintfW, vsprintf, _vstprintf, vswprintf)
#    pragma deprecated (_vsnprintf, _vsnwprintf, _vsntprintf, wvnsprintf, wvnsprintfA, wvnsprintfW)
#    pragma deprecated (strncpy, wcsncpy, _tcsncpy, _mbsncpy, _mbsnbcpy, StrCpyN, StrCpyNA, StrCpyNW, StrNCpy, strcpynA, StrNCpyA, StrNCpyW, lstrcpyn, lstrcpynA, lstrcpynW)
#    pragma deprecated (strncat, wcsncat, _tcsncat, _mbsncat, _mbsnbcat, StrCatN, StrCatNA, StrCatNW, StrNCat, StrNCatA, StrNCatW, lstrncat, lstrcatnA, lstrcatnW, lstrcatn)
#    pragma deprecated (strtok, _tcstok, wcstok, _mbstok)
#    pragma deprecated (makepath, _tmakepath,  _makepath, _wmakepath)
#    pragma deprecated (_splitpath, _tsplitpath, _wsplitpath)
#    pragma deprecated (scanf, wscanf, _tscanf, sscanf, swscanf, _stscanf, snscanf, snwscanf, _sntscanf)
//#    pragma deprecated (_itoa, _itow, _i64toa, _i64tow, _ui64toa, _ui64tot, _ui64tow, _ultoa, _ultot, _ultow)
#    pragma deprecated (gets, _getts, _gettws)
#    pragma deprecated (IsBadWritePtr, IsBadHugeWritePtr, IsBadReadPtr, IsBadHugeReadPtr, IsBadCodePtr, IsBadStringPtr)
#    pragma deprecated (CharToOem, CharToOemA, CharToOemW, OemToChar, OemToCharA, OemToCharW, CharToOemBuffA, CharToOemBuffW)
//#    pragma deprecated (alloca, _alloca)
#    pragma deprecated (strlen, wcslen, _mbslen, _mbstrlen, StrLen, lstrlen)
#    pragma deprecated (memcpy, RtlCopyMemory, CopyMemory)
#else 
#ifdef __GNUC__
// Some of these functions are Windows specific, so you may want to add *nix specific banned function calls
#    pragma GCC poison strcpy strcpyA strcpyW wcscpy _tcscpy _mbscpy StrCpy StrCpyA StrCpyW lstrcpy lstrcpyA lstrcpyW _tccpy _mbccpy
#    pragma GCC poison strcat strcatA strcatW wcscat _tcscat _mbscat StrCat StrCatA StrCatW lstrcat lstrcatA lstrcatW StrCatBuff StrCatBuffA StrCatBuffW StrCatChainW _tccat _mbccat
#    pragma GCC poison wnsprintf wnsprintfA wnsprintfW sprintfW sprintfA wsprintf wsprintfW wsprintfA sprintf swprintf _stprintf _snwprintf _snprintf _sntprintf
#    pragma GCC poison wvsprintf wvsprintfA wvsprintfW vsprintf _vstprintf vswprintf
#    pragma GCC poison _vsnprintf _vsnwprintf _vsntprintf wvnsprintf wvnsprintfA wvnsprintfW
#    pragma GCC poison strncpy wcsncpy _tcsncpy _mbsncpy _mbsnbcpy StrCpyN StrCpyNA StrCpyNW StrNCpy strcpynA StrNCpyA StrNCpyW lstrcpyn lstrcpynA lstrcpynW
#    pragma GCC poison strncat wcsncat _tcsncat _mbsncat _mbsnbcat StrCatN StrCatNA StrCatNW StrNCat StrNCatA StrNCatW lstrncat lstrcatnA lstrcatnW lstrcatn
#    pragma GCC poison strtok _tcstok wcstok _mbstok
#    pragma GCC poison makepath _tmakepath  _makepath _wmakepath
#    pragma GCC poison _splitpath _tsplitpath _wsplitpath
#    pragma GCC poison scanf wscanf _tscanf sscanf swscanf _stscanf snscanf snwscanf _sntscanf
//#    pragma GCC poison _itoa _itow _i64toa _i64tow _ui64toa _ui64tot _ui64tow _ultoa _ultot _ultow
#    pragma GCC poison gets _getts _gettws
#    pragma GCC poison IsBadWritePtr IsBadHugeWritePtr IsBadReadPtr IsBadHugeReadPtr IsBadCodePtr IsBadStringPtr
#    pragma GCC poison CharToOem CharToOemA CharToOemW OemToChar OemToCharA OemToCharW CharToOemBuffA CharToOemBuffW
//#    pragma GCC poison alloca _alloca
#    pragma GCC poison strlen wcslen _mbslen _mbstrlen StrLen lstrlen
#    pragma GCC poison memcpy RtlCopyMemory CopyMemory
#endif

#endif  /* _INC_BANNED */
As long as there is life, there is hope
Re[4]: А memmove?
От: Alexander G Украина  
Дата: 21.05.09 20:03
Оценка:
Здравствуйте, Sorantis, Вы писали:

S>список баннд функций.


S># pragma deprecated (strlen, wcslen, _mbslen, _mbstrlen, StrLen, lstrlen)


Вот это я хочу видеть, как выстрелить себе в ногу через strlen
Русский военный корабль идёт ко дну!
Re[5]: А memmove?
От: Sorantis Швеция  
Дата: 21.05.09 21:10
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Здравствуйте, Sorantis, Вы писали:


S>>список баннд функций.


S>># pragma deprecated (strlen, wcslen, _mbslen, _mbstrlen, StrLen, lstrlen)


AG>Вот это я хочу видеть, как выстрелить себе в ногу через strlen


Ну это только майкрософт так решил. Стандартом не запрещено юзать strlen.
А причина запрета МС заключается в том что strlen никогда не завершится (до тех пор пока не встретим access violation) если не найден '\0' . Потому и deprecated.
As long as there is life, there is hope
Re[5]: А memmove?
От: Antikrot  
Дата: 21.05.09 22:22
Оценка: :)
Здравствуйте, Alexander G, Вы писали:

AG>Вот это я хочу видеть, как выстрелить себе в ногу через strlen

а мне интересно, в каком их коде определен макрос __GNUC__
Re[2]: [ANN] memcpy() banned
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 22.05.09 03:18
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Маразм силен. Кроме того, не понимаю, чем strcpy_s лучше strncpy.


это просто разные вещи, strncpy — копируемая строка не влезла в целевой буфер? ну и пофиг, идем дальше; strcpy_s — копируемая строка не влезла в целевой буфер? тушим свет и сливаем воду
... << RSDN@Home 1.2.0 alpha 4 rev. 1218>>
Re[6]: А memmove?
От: byleas  
Дата: 22.05.09 05:28
Оценка:
Здравствуйте, Antikrot, Вы писали:

A>а мне интересно, в каком их коде определен макрос __GNUC__

Это они для mingw подготовили.
Re: [ANN] memcpy() banned
От: carpenter Голландия  
Дата: 22.05.09 07:07
Оценка: +3
Здравствуйте, Sorantis, Вы писали:

типа — пишите на шарпе уже ?
Весь мир — Кремль, а люди в нем — агенты
Re: [ANN] memcpy() banned
От: CreatorCray  
Дата: 22.05.09 08:27
Оценка:
Здравствуйте, Sorantis, Вы писали:

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 ибо она потенциально опасна.
И шоп новая версия винды при обнаружении в исполняемом файле программы этой жуткой опасной инструкции отказывалась бы его выполнять.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: В тему пост из КСВ
От: Alexander G Украина  
Дата: 22.05.09 08:51
Оценка: 1 (1) +1 :)))
http://www.rsdn.ru/forum/message/3257463.1.aspx
Автор: VCoder
Дата: 21.01.09
Русский военный корабль идёт ко дну!
Re[6]: А memmove?
От: Alexander G Украина  
Дата: 22.05.09 09:14
Оценка:
Здравствуйте, Sorantis, Вы писали:

S>А причина запрета МС заключается в том что strlen никогда не завершится (до тех пор пока не встретим access violation) если не найден '\0' . Потому и deprecated.


Не, это не то. Покажите запись за границу буфера через strlen. И секьюрную альтернативу strlen.
Русский военный корабль идёт ко дну!
Re[3]: [ANN] memcpy() banned
От: Кодт Россия  
Дата: 22.05.09 11:17
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Святое — это memset.

RB>memset — это наше все!

memset — это наше ваще. Стоит перепутать "сколько байтов" и "чем заполнять", и нас ждёт сурприз!
... << RSDN@Home 1.2.0 alpha 4 rev. 1207>>
Перекуём баги на фичи!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.