Curl долбоору өзүнүн кодунан strcpy функциясын алып салды.

Тармак аркылуу маалыматтарды жөнөтүү жана кабыл алуу үчүн curl утилитасын түзгөн автор Дэниел Стенберг долбоордун код базасында strcpy() функциясынын колдонулбай калганын жана аны келечекте колдонууга тыюу салынганын жарыялады. Бул чечим былтыркы жылы киргизилген саптан белгилүү бир сандагы байттарды көчүргөн strncpy() функциясынын колдонулбай калганынан кийин кабыл алынган. strncpy() функциясын колдонуу саптын аягында нөлдүк белгинин жоктугунан же нөлдөр менен кошумча толтуруудан улам каталардын пайда болуу коркунучун жараткан.

strncpy() функциясына чакыруулар strcpy() функциясы менен алмаштырылган, ал же баштапкы саптын өлчөмүн эске алуу менен, аны чакыруудан мурун көздөгөн буфер үчүн эстутумду бөлүп берген, же баштапкы сап менен көздөгөн буфердин өлчөмдөрү дал келген-келбегенин текшерген. strlcpy() функциясы алмаштырылган жок, анткени ал ар дайым бүтүндөй сапты көчүрүүнү же катаны кайтарууну талап кылган.

Эми strcpy() функциясына бардык чакыруулар жаңы curlx_strcopy(dest, dsize, src, slen функциясы менен алмаштырылды. curlx_strcopy() функциясы булак жана көздөгөн буферлердин өлчөмүн талап кылат, бирок көздөгөн буфер сапты аяктаган нөлдүк белгини жайгаштыруу үчүн булак буферинен чоңураак болушу керек, ал көчүрүү учурунда өткөрүп жибербөө үчүн буфердин аягына кошулат. Эгерде көздөгөн буфердин өлчөмү нөлдөн чоң болсо, бирок көздөгөн сапты көчүрүүгө жетиштүү болбосо, башына нөлдүк байт кошулат. 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() функциясын curlx_strcopy() функциясы менен алмаштыруу адамдык ката коркунучу бар болгондуктан жасалган, бул эс тутумду текшерүү/бөлүштүрүү жана strcpy() чакырууларынын ортосунда коддун бөлүнүшүнө алып келет, мисалы, коддун бир бөлүгүн гана этиятсыздык менен жылдыруу же текшерүү менен strcpy() чакыруунун ортосуна код киргизүү аркылуу. Андан тышкары, strcpy функциясын колдонууну жок кылуу, strcpy() функциясынын бар экендигин коддогу текшерүүлөрдү эске албастан, алсыздык деп эсептеген жасалма интеллект куралдарынын туура эмес аныктоолорунан келип чыккан алсыздык отчетторундагы жалган оң натыйжалардын агымын жок кылат.

Source: opennet.ru

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster