Curl-projektet har fjernet brugen af strcpy-funktionen i koden

Daniel Stenberg, forfatteren af værktøjet til at hente og sende data over nettet curl, har annonceret ophøret af brugen af strcpy() i projektets kodebase og forbud mod anvendelse af denne funktion fremover. Beslutningen er en fortsættelse af den tidligere indførte afskaffelse af strncpy(), som kopierer et bestemt antal bytes fra den indgående streng. Brug af strncpy() havde risiko for fejl, da den kunne overse nul-tegnet i slutningen af strengen eller tilføje ekstra nuller.

Henvisninger til strncpy() er blevet erstattet af strcpy(), hvor der før kaldet blev udført hukommelsestildeling til målbufferen med hensyn til størrelsen af den oprindelige streng, eller der blev lavet en kontrol for at sikre, at størrelsen af den oprindelige streng svarede til målbufferens størrelse. Erstatningen med strlcpy() blev ikke gennemført, da det var nødvendigt altid at kopiere hele strengen eller returnere en fejl.

Nu er alle kald til strcpy() blevet erstattet med den nye funktion curlx_strcopy(dest, dsize, src, slen). Funktionen curlx_strcopy() kræver angivelse af størrelsen på den oprindelige og den målrettede buffer med den forudsætning, at den målrettede buffer altid skal være større end den oprindelige for at rumme nul-tegnet i slutningen af strengen, som funktionen tvinger til at blive tilføjet for at undgå, at det overses ved kopiering. Hvis størrelsen på den målrettede buffer er større end nul, men ikke tilstrækkelig til at kopiere den målrettede streng, tilføjes en nulbyte til starten. 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; }

Erstatningen af strcpy() med curlx_strcopy() er foretaget, da der er mulighed for menneskelige fejl, der fører til adskillelse af koden med kontrol/hukommelsesallokering og kald af strcpy(), for eksempel ved tankeløs overførsel af kun en del af koden eller indsættelse af kodestykker mellem kontrol og kaldet til strcpy(). Derudover vil ophør med brugen af strcpy fjerne strømmen af falske sårbarhedsrapporter på grund af inkorrekte udløsninger fra AI-værktøjer, der betragter tilstedeværelsen af strcpy() som en sårbarhed uden hensyntagen til de eksisterende kontroller i koden.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster