ЛЛВМ програмери предлажу безбедно руковање бафером у Ц++

ЛЛВМ Лого

ЛЛВМ је оквир за развој компајлера, као и за помоћ у изградњи нових програмских језика и побољшању постојећих језика.

Л програмери пројекта ЛЛВМ предложили су низ промена у циљу јачања безбедности од пројеката Ц + + критичне за мисију и обезбеђују средства за елиминисање грешака изазваних прекорачењем бафера.

Као такав, предлог који су објавили фокусира се на рад у две области посебно: обезбеђивање развојног модела који омогућава безбедан рад са баферима и рад на јачању безбедности библиотеке стандардних функција либц++.

Спомиње се да је предложени модел безбедног програмирања за Ц++ «је коришћење класа које обезбеђује стандардна библиотека када радите са баферима уместо манипулације сировим показивачима». На пример, предлаже се коришћење класа стд::арраи, стд::вецтор и стд::спан, које ће бити додате уз проверу времена извршавања за додељену меморију ван граница.

Наш циљ је да побољшамо безбедност критичних Ц++ база кода. За ово планирамо да радимо на две идеје.

Харденед Ц++ стандардна библиотека
Ц++ модел програмирања безбедног бафера и алати за усвајање
Ојачани либц++ има за циљ да учини интерфејсе стандардне библиотеке Ц++ уопштено сигурнијим.

Ц++-ов безбедни модел програмирања бафера заједно са ојачаним либц++-ом обезбеђују ублажавање приступа меморији ван граница током извршавања. Алати за усвајање ће аутоматизовати миграцију кода на овај нови модел програмирања.

Поред овога помиње се и то за борбу против „опасних” пракси програмирања у звекет, ако предлаже издавање упозорења компајлера за све аритметичке операције показивача, слично упозорењима цланг-тиди линтер када се користи заставица "цппцорегуиделинес-про-боундс-поинтер-аритхметиц", подршка за коју ће се појавити у ЛЛВМ 16. Да бисте омогућили таква упозорења, у цланг ће бити додата посебна заставица, која је подразумевано неактивна .

Планирано је да се имплементира опциони режим заштите у либц++, који ће, када је омогућен, открити неке ситуације које доводе до недефинисаног понашања у току извршавања. На пример, на часовима стд::спан и стд::вецтор, приступ ван граница ће бити надгледан, у ком случају програм неће успети.

Ове додатне провере времена извршавања биће груписане у неколико категорија које се могу засебно контролисати. Намера је да добављач за испоруку либц++ на својој платформи може да одлучи које провере ће омогућити у библиотеци за отпрему (ако постоји), у зависности од жељеног нивоа безбедности.

Програмери верују да ће додавање таквих промена одржати либц++ усаглашеним са Ц++ стандардима, пошто избор начина на који ће поступати у случајевима недефинисаног понашања зависи од програмера библиотеке, који, између осталог, могу да третирају недефинисано понашање као закључавање које захтева да програм излаз.

Тхе планирано је да се провере времена извршавања у либц++ поделе у категорије који се могу укључити појединачно. Неке од предложених провера које не доводе до сложенијих операција или АБИ промена су већ примењене у безбедном режиму либц++ (безбедни режим).

Да поновим, крајњи циљ је да испоручена библиотека омогући ове провере у производњи; ово није функција „само за отклањање грешака“, иако ће на крају заменити дуго покварени „режим за отклањање грешака“.

Поред тога, планира се припрема комплета алата за корекцију кода што ће омогућити да се променљиве замене сировим показивачима у контејнерима и да се примене алтернативни руковаоци у ситуацијама када контејнер не може директно да замени показивач (на пример, конструкција „иф(арраи_поинтер)“ може да се конвертује у „иф(спан.дата ( )»).Подешавања се могу применити не само на локалне променљиве, већ и на параметре типа са показивачима.

Такође се помиње да разматрају „проверу статичког анализатора звекет“ осетљив на руту која упозорава ако стд::спан је направљен од контејнера који је мањи од величине наведене у конструктору распона. Наведени чеккер је самосталан и користан сам по себи, ако све прође како треба, подразумевано ће бити омогућен за све кориснике

Коначно ако сте заинтересовани да сазнате више о томе, детаље можете погледати у следећи линк.


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. Odgovorni za podatke: AB Internet Networks 2008 SL
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.