Curl layihəsi kodda strcpy funksiyasının istifadəsindən imtina etdi

Daniel Stenberg, curl-un məlumat ötürmə və qəbul etmə alətinin müəllifi, layihənin kod bazasında strcpy() funksiyasının istifadəsini dayandırdığını və bu funksiyanı gələcəkdə tətbiq etməyi qadağan etdiyini açıqlayıb. Bu qərar, keçən il strncpy() funksiyasının istifadəsindən imtina etməyi başlatdığı prosesi davam etdirir; bu funksiya daxil olan sətirdən müəyyən sayda bayt köçürürdü. strncpy() funksiyasının istifadəsi sıfır simvolunu keçmə riskini və ya sıfırlarla əlavə doldurulma problemini yaradırdı.

strncpy() -yə edilən müraciətlər, hədəf bufer üçün giriş sətirinin ölçüsünü nəzərə alaraq yaddaşın ayrılması ilə call edilməzdən əvvəl strcpy() funksiyası ilə əvəz olundu ya da hədəf buferin və giriş sətirinin ölçüsünün uyğunluğunun yoxlanılması həyata keçirildi. strlcpy() funksiyasına keçid edilmədi, çünki həmişə tam sətiri köçürmək və ya xəta qaytarmaq tələb olunurdu.

İndi bütün strcpy() çağırışları yeni curlx_strcopy(dest, dsize, src, slen) funksiyası ilə əvəz olunub. curlx_strcopy() funksiyası daxil olan və hədəf buferin ölçülərini göstərməsini tələb edir, bu da hədəf buferin giriş sətirini qəbul etmək üçün mütləq daha böyük olması lazımdır. Funksiya, köçürmə zamanı sıfır simvolunun atlanmamasını təmin etmək üçün onu sona əlavə edir. Hədəf buferin ölçüsü sıfırdan çoxdursa, lakin hədəf sətirinin köçürülməsi üçün kifayət deyilsə, sıfır baytı başlanğıca əlavə olunur. 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; }

strcpy() -nin curlx_strcopy() ilə əvəzlənməsi, kodun yoxlama/qoriş ayrımını və strcpy() çağırışını ayıran insan səhvi ehtimalı olduğu üçün baş verib, məsələn, yalnız kod parçalarının düşünmədən köçürülməsi və yoxlama ilə strcpy() çağırışı arasında kodun yapışdırılması zamanı. Bundan əlavə, strcpy() -nin istifadəsinin dayandırılması, kodda olan yoxlamaları nəzərə almadan bunu zəiflik olaraq hesablayan AI alətlərinin yanlış xəbərdarlıqlarının axınından xilas olmağa kömək edəcək.

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster