Projekti Curl e ka eliminuar përdorimin e funksionit strcpy në kod.

Daniel Stenberg, autori i mjetit për marrjen dhe dërgimin e të dhënave në rrjet curl, shpalli ndalimin e përdorimit të funksionit strcpy() në kodin e projektit dhe ndalimin e përdorimit të këtij funksioni në të ardhmen. Ky vendim është një vazhdim i heqjes që u iniciua vitin e kaluar nga funksioni strncpy(), i cili kopjonte një numër të caktuar bajtësh nga vargu hyrës. Përdorimi i strncpy() kishte krijuar rrezik për të shkaktuar gabime për shkak të humbjes së simbolit null në fund të vargut ose të mbushjes shtesë me zero.

Thirrjet për strncpy() janë zëvendësuar me funksionin strcpy(), para thirrjes së të cilit është bërë alokimi i memories për tamponin e synuar duke pasur parasysh madhësinë e vargut fillestar ose ka pasur një kontroll për përputhshmërinë e madhësisë së vargut fillestar dhe tamponit të synuar. Zëvendësimi me funksionin strlcpy() nuk është realizuar, pasi duhej gjithmonë të kopjohej e gjithë vargu ose të kthehej një gabim.

Tani tani të gjitha thirrjet strcpy() janë zëvendësuar me funksionin e ri curlx_strcopy(dest, dsize, src, slen). Funksioni curlx_strcopy() kërkon specifikimin e madhësisë së tamponëve të burimit dhe destinacionit duke marrë parasysh se tamponi i destinacionit duhet domosdoshmërisht të jetë më i madh se ai i burimit për të akomoduar karakterin null në fund të stringut, i cili shtohet nga funksioni në fund për të shmangur humbjen e tij gjatë kopjimit. Nëse madhësia e tamponit të destinacionit është më e madhe se zero, por nuk është e mjaftueshme për të kopjuar stringun në destinacion, një byte null shtohet në fillim. 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; }

Zëvendësimi i strcpy() me curlx_strcopy() është kryer, pasi ekziston mundësia e gabimeve njerëzore që çojnë në ndarjen e kodit me verifikimin/rezervimin e memories dhe thirrjen e strcpy(), për shembull, gjatë transferimit të papërshtatshëm të vetëm një pjese të kodit ose futjes së kodit midis verifikimit dhe thirrjes së strcpy(). Për më tepër, ndalimi i përdorimit të strcpy do të largojë mesazhet e rreme mbi dobësitë për shkak të aktivizimeve të papërshtatshme nga mjetet AI, duke menduar se prania e strcpy() është një dobësi pa marrë parasysh verifikimet e pranishme në kod.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster