Projekt Curl har slutat att anvÀnda funktionen strcpy i koden

Daniel Stenberg, skaparen av verktyget för att hÀmta och skicka data över nÀtet curl, har meddelat att anvÀndningen av funktionen strcpy() i projektets kodbas har upphört och att denna funktion förbjöds i framtiden. Beslutet följer upp ett avskaffande av funktionen strncpy() förra Äret, som kopierade ett angivet antal byte frÄn den ingÄende strÀngen. AnvÀndningen av strncpy() medförde risk för fel pÄ grund av att nulltecknet i slutet av strÀngen kunde hoppas över eller att nollor lades till.

Anrop till strncpy() har ersatts med funktionen strcpy(), som föregicks av minnesallokering för mÄlbufferten med hÀnsyn till storleken pÄ den ursprungliga strÀngen, eller sÄ gjordes en kontroll av överensstÀmmelsen mellan storleken pÄ den ursprungliga strÀngen och mÄlbufferten. Ingen ersÀttning med funktionen strlcpy() gjordes, eftersom det alltid behövdes kopiera hela strÀngen eller returnera ett fel.

Nu har alla anrop till strcpy() ersatts med den nya funktionen curlx_strcopy(dest, dsize, src, slen). Funktions curlx_strcopy() krÀver att storleken pÄ den ursprungliga och mÄlbufferten anges med resultatet att mÄlbufferten alltid mÄste vara större Àn den ursprungliga för att rymma nulltecknet i slutet av strÀngen, vilket tvingas lÀggas till av funktionen för att undvika att det hoppas över vid kopiering. Om storleken pÄ mÄlbufferten Àr större Àn noll, men inte tillrÀcklig för att kopiera den avsedda strÀngen, sÄ lÀggs ett nollbyte till i början. void curlx_strcopy(char *dest, size_t dsize, const char *src, size_t slen) { DEBUGASSERT(slen < dsize); if(slen < dsize) { memcpy(dest, src, slen); dest[slen] = 0; } else if(dsize) dest[0] = 0; }

ErsÀttningen av strcpy() med curlx_strcopy() har gjorts eftersom det finns en risk för mÀnskliga fel, vilket kan leda till att koden delas upp med kontroller/minnesallokering och anropet av strcpy(), till exempel vid impulsivt överförande av endast en del av koden eller insÀttning av kod mellan kontrollen och anropet av strcpy(). Dessutom kommer upphörandet av anvÀndningen av strcpy att bidra till att eliminera flöden av falska sÄrbarhetsmeddelanden pÄ grund av felaktiga ÄtgÀrder frÄn AI-verktyg, som anser att förekomsten av strcpy() Àr en sÄrbarhet utan att ta hÀnsyn till kontrollerna i koden.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster