Het Curl-project heeft de functie strcpy uit de code verwijderd

Daniel Stenberg, de auteur van de netwerkgereedschap curl, heeft aangekondigd dat het gebruik van de functie strcpy() in de codebasis van het project is stopgezet en dat het gebruik van deze functie in de toekomst is verboden. Deze beslissing is een vervolg op de afschaffing van de functie strncpy() vorig jaar, die een bepaald aantal bytes van de invoerstring kopieert. Het gebruik van strncpy() leidde tot potentiƫle fouten door het overslaan van de null-terminator aan het einde van de string of door onbedoeld nullen toe te voegen.

Aanroepen van strncpy() zijn vervangen door de functie strcpy(), waarbij vóór de aanroep geheugen voor de doellocatie werd toegewezen, rekening houdend met de grootte van de oorspronkelijke string, of er was een controle op de overeenstemming van de grootte van de oorspronkelijke string en de doellocatie. Er was geen vervanging door de functie strlcpy() omdat altijd de volledige string moest worden gekopieerd of een fout moest worden geretourneerd.

Nu zijn alle aanroepen van strcpy() vervangen door de nieuwe functie curlx_strcopy(dest, dsize, src, slen). De functie curlx_strcopy() vereist dat de grootte van de oorspronkelijke en doelbuffer wordt opgegeven, met de voorwaarde dat de doelbuffer groter moet zijn dan de oorspronkelijke om de null-terminator aan het einde van de string op te slaan, die door de functie wordt toegevoegd om te voorkomen dat deze wordt overgeslagen tijdens het kopiƫren. Als de grootte van de doelbuffer groter is dan nul, maar niet voldoende is om de doelstring te kopiƫren, wordt er een null-byte toegevoegd aan het begin. 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; }

De vervanging van strcpy() door curlx_strcopy() is doorgevoerd omdat er een kans op menselijke fouten bestaat, wat kan leiden tot het scheiden van de code met controles/geheugenallocatie en de aanroep van strcpy(), bijvoorbeeld bij het ondoordacht verplaatsen van slechts een deel van de code of het invoegen van code tussen de controle en de aanroep van strcpy(). Bovendien zal het stopzetten van het gebruik van strcpy helpen om een stroom van valse meldingen over kwetsbaarheden te vermijden als gevolg van onjuiste triggers van AI-tools die de aanwezigheid van strcpy als een kwetsbaarheid beschouwen zonder rekening te houden met de aanwezige controles in de code.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster