Itusilẹ ti ControlFlag 1.0, ohun elo fun idamo awọn aṣiṣe ni koodu C

Intel ti ṣe atẹjade itusilẹ pataki akọkọ ti irinṣẹ ControlFlag 1.0, eyiti o fun ọ laaye lati ṣe idanimọ awọn aṣiṣe ati awọn asemase ni koodu orisun nipa lilo eto ikẹkọ ẹrọ ti oṣiṣẹ lori iye nla ti koodu to wa. Ko dabi awọn olutupalẹ aimi ti aṣa, ControlFlag ko lo awọn ofin ti a ti ṣetan, ninu eyiti o nira lati pese fun gbogbo awọn aṣayan ti o ṣeeṣe, ṣugbọn da lori awọn iṣiro lori lilo ọpọlọpọ awọn itumọ ede ni nọmba nla ti awọn iṣẹ akanṣe. Koodu ControlFlag ti kọ ni C++ ati pe o wa ni ṣiṣi labẹ iwe-aṣẹ MIT.

Eto naa ti ni ikẹkọ nipasẹ kikọ awoṣe iṣiro kan ti koodu ti o wa tẹlẹ ti awọn iṣẹ akanṣe orisun ṣiṣi ti a tẹjade ni GitHub ati awọn ibi ipamọ ti gbogbo eniyan ti o jọra. Ni ipele ikẹkọ, eto naa ṣe ipinnu awọn ilana aṣoju fun kikọ awọn ẹya ninu koodu ati kọ igi syntactic ti awọn ọna asopọ laarin awọn ilana wọnyi, ti n ṣe afihan sisan ti ipaniyan koodu ninu eto naa. Bi abajade, igi ipinnu ipinnu itọkasi ni a ṣẹda ti o ṣajọpọ iriri idagbasoke ti gbogbo awọn koodu orisun ti a ṣe atupale. Awọn koodu labẹ awotẹlẹ faragba iru ilana ti idamo awọn ilana ti o ti wa ni ẹnikeji lodi si igi ipinnu itọkasi. Awọn iyatọ nla pẹlu awọn ẹka adugbo tọkasi wiwa anomaly kan ninu apẹrẹ ti n ṣayẹwo.

Itusilẹ ti ControlFlag 1.0, ohun elo fun idamo awọn aṣiṣe ni koodu C

Gẹgẹbi apẹẹrẹ ti awọn agbara ControlFlag, awọn olupilẹṣẹ ṣe atupale awọn koodu orisun ti OpenSSL ati awọn iṣẹ akanṣe cURL:

  • Awọn itumọ Anomalous “(s1 == NULL) ∧ (s2 == NULL)” ati “(s1 == NULL) | (s2 == NULL)" , ti ko baramu ilana ti o wọpọ "(s1 == NULL) || (s2 == NULL)". Koodu naa tun ṣe idanimọ awọn aiṣedeede ninu awọn ikosile “(-2 == rv)” (iyokuro jẹ typo) ati “BIO_puts(bp, “:”) <= 0)” (ninu ipo ti ṣiṣe ayẹwo ipari aṣeyọri ti iṣẹ yẹ ki o jẹ "== 0").
  • Ni CURL, aṣiṣe kan ti ṣe awari ti ko rii nipasẹ awọn atunnkanka aimi nigba lilo abala igbekalẹ “s->keepon”, eyiti o ni iru nomba, ṣugbọn ti a fiwewe pẹlu iye boolean TÒÓTỌ.

Lara awọn ẹya ti ẹya ControlFlag 1.0, atilẹyin ni kikun wa fun awọn awoṣe boṣewa fun ede C ati agbara lati ṣe awari awọn aiṣedeede ni awọn ọrọ “ti o ba” ni ipo. Fún àpẹrẹ, nígbà tí a bá ń ṣàyẹ̀wò àjákù kóòdù “bí (x = 7) y = x;” Eto naa yoo pinnu pe alaye “ti o ba” nigbagbogbo nlo ikole “ayipada == nọmba” lati ṣe afiwe awọn iye nọmba, nitorinaa o ṣee ṣe gaan pe “ayípadà = nọmba” ninu ikosile “ti o ba” jẹ idi nipasẹ typo. Ohun elo naa pẹlu iwe afọwọkọ ti o fun ọ laaye lati ṣe igbasilẹ awọn ibi ipamọ ede C ti o wa lori GitHub ki o lo wọn lati kọ awoṣe naa. Awọn awoṣe ti o ti ṣetan tun wa, gbigba ọ laaye lati bẹrẹ ṣayẹwo koodu lẹsẹkẹsẹ.

orisun: opennet.ru

Fi ọrọìwòye kun