Hányszor láttunk példát arra az esetre, mikor a kezdő kocsmatöltelék, miután cimborája már szupermen pózba szenderedett, kettőjük félsöréből egy hirtelen mozdulattal igyekszik egy egyészet gyártani, nem számolva a hirtelen habzás kockázatával... És hányszor láttunk már olyat, hogy a szeleburdi programozó nagyobb adag bitet próbál betuszkolni a memóra egyik szegletébe, mint ami odaférne!
A Microsoft úgy döntött, hogy (saját termékeit tekintve legalábbis) leszámol az utóbb említett káros gyakorlattal, és tiltólistára teszi a memcpy(), CopyMemory() és RtlCopyMemory() függvényeket, helyettük pedig a memcpy_s() használatát írja elő, melynél már megadható a kimeneti puffer mérete. Nem ez az első lépés Redmond részéről a potenciálisan veszélyes rutinok kiküszöbölésére, példának okáért az strcpy() és az strcat() függvények is már rég feketelistán vannak.
Persze a fenti eljárások helytelen használata nem csak az MS-programozók sajátja, és természetesen a tiltás sem egy csodaszer. Teljesen biztonságos kódok talán akkor születnének, ha a nop utasításon kívül semmi mást nem használhatnánk. Reméljük viszont, hogy ez a lépés talán felhívja a figyelmet egyes hőskorban született eljárások veszélyeire, valamint bízzunk abban is, hogy ezt elősegítendő, a memcpy_s a közeljövőben a GCC csomagba is be fog kerülni.
Hunger 2009.05.16. 22:45:37