Iphrojekthi ye-LLVM ithuthukisa ukuphatha okuphephile kwe-buffer ku-C++

Abathuthukisi bephrojekthi ye-LLVM bahlongoze izinguquko ezimbalwa okuhloswe ngazo ukuqinisa ukuphepha kwamaphrojekthi we-C++ abaluleke kakhulu kunjongo kanye nokuhlinzeka ngezindlela zokuqeda amaphutha abangwe ukugcwala kwebhafa. Umsebenzi ugxile ezindaweni ezimbili: ukuhlinzeka ngemodeli yokuthuthukisa ekuvumela ukuthi usebenze ngokuphephile ngamabhafa, nokusebenza ekuqiniseni ukuphepha komtapo wezincwadi ojwayelekile we-libc++.

Imodeli ehlongozwayo yokuhlela ephephile ye-C++ iwukusebenzisa amakilasi anikezwe umtapo wolwazi ojwayelekile lapho usebenza nezigcinalwazi esikhundleni sokukhohlisa izikhombi ezingenalutho. Isibonelo, kuhlongozwa ukuthi kusetshenziswe i-std::array, std::vector, kanye ne-std::span amakilasi, azokwengezwa nokuhlola kwesikhathi sokusebenza kwememori eyabelwe ukuphuma kwemingcele.

Ukuze kuliwe nemikhuba yokuhlela eyingozi ku-clang, kuhlongozwa ukuthi kukhishwe izexwayiso zeqoqo layo yonke imisebenzi ye-arithmetic yesikhombi, efana nezexwayiso ze-clang-tidy's linter lapho kusetshenziswa ifulegi elithi "cppcoreguidelines-pro-bounds-pointer-arithmetic", usekelo oluzovela ukukhishwa kwe-LLVM 16. Ukuze unike amandla izexwayiso ezinjalo, ifulegi elihlukile lizongezwa ku-clang, elingasebenzi ngokuzenzakalelayo.

Kuhlelelwe ukusebenzisa imodi yokuvikela eqinile yokuzikhethela ku-libc++, okuthi, uma inikwe amandla, ibambe izimo ezithile eziholela ekuziphatheni okungachazwanga ngesikhathi sokusebenza. Isibonelo, kumakilasi okuthi std::span kanye ne-std::vector, ukufinyelela okungaphandle kwemingcele kuzoqashelwa, lapho uhlelo luzophahlazeka. Abathuthukisi bakholelwa ukuthi ukungeza izinguquko ezinjalo kuzogcina i-libc++ ithobelana nezindinganiso ze-C++, njengoba ukukhethwa kwendlela yokusingatha izimo zokuziphatha okungachazwanga kusekubathuthukisi belabhulali, okungenzeka, phakathi kwezinye izinto, kuhumushe ukuziphatha okungachazwanga njengokuphahlazeka okudinga uhlelo lokuphuma.

Ukuhlolwa kwesikhathi sokusebenza ku-libc++ kuhlelwe ukuthi kuhlukaniswe ngezigaba ezingafakwa ngazodwana. Okunye ukuhlola okuphakanyisiwe okungaphumeleli emisebenzini eyinkimbinkimbi noma izinguquko ze-ABI sezivele zenziwa kumodi ephephile ye-libc++.

Ngaphezu kwalokho, kuhlelwe ukuthi kulungiswe ikhithi yamathuluzi yokulungisa amakhodi ekuvumela ukuthi ushintshe okuguquguqukayo ufake izikhombi ezingenalutho ezitsheni futhi usebenzise ezinye izibambi ezimweni lapho isiqukathi singakwazi ukuthatha indawo yesikhombi ngokuqondile (ngokwesibonelo, "uma (array_pointer)" iguqulelwe ku-“uma (span.data ()”). Ukulungiswa kungasetshenziswa hhayi kuphela ezintweni eziguquguqukayo zendawo, kodwa futhi nasekuthayipheni amapharamitha ngezikhombi.

Source: opennet.ru

Engeza amazwana