Kuburitswa kweControlFlag 1.0, chishandiso chekuziva zvikanganiso muC kodhi

Intel yakaburitsa yekutanga kuburitswa kukuru kweiyo ControlFlag 1.0 chishandiso, iyo inokutendera iwe kuona zvikanganiso uye anomalies mune sosi kodhi uchishandisa muchina kudzidza sisitimu yakadzidziswa pane yakakura kodhi iripo. Kusiyana nechinyakare static analyzers, ControlFlag haishandisi yakagadzirira-yakagadzirwa mitemo, iyo yakaoma kupa kune zvese zvingasarudzwa zvingasarudzwa, asi inobva pahuwandu hwekushandiswa kwemitauro yakasiyana-siyana inovaka muhuwandu hwezvirongwa zviripo. Iyo ControlFlag kodhi yakanyorwa muC ++ uye yakavhurika yakavharwa pasi peMIT rezinesi.

Iyo sisitimu inodzidziswa nekuvaka iyo nhamba yemhando yeiyo iripo kodhi rondedzero yeakavhurika-sosi mapurojekiti akaburitswa muGitHub uye akafanana neruzhinji repositori. Padanho rekudzidzira, sisitimu inotarisisa maitiro akajairika ekuvaka zvimiro mukodhi uye inovaka muti we syntactic wekubatanidza pakati peaya mapatani, ichiratidza kuyerera kwekodhi kuuraya muchirongwa. Nekuda kweizvozvo, muti wekuita sarudzo unoumbwa unosanganisa ruzivo rwebudiriro yeese akaongororwa masosi macode. Iyo kodhi iri kuongororwa inoenda nenzira yakafanana yekuziva mapatani anotariswa achipesana nemuti wesarudzo. Kusawirirana kukuru nemapazi akavakidzana kunoratidza kuvapo kweanomaly patani iri kuongororwa.

Kuburitswa kweControlFlag 1.0, chishandiso chekuziva zvikanganiso muC kodhi

Semuenzaniso wekugona kweControlFlag, vagadziri vakaongorora masource codes eOpenSSL uye cURL mapurojekiti:

  • Anomaous anovaka β€œ(s1 == NULL) ∧ (s2 == NULL)” uye β€œ(s1 == NULL) | (s2 == NULL)" , izvo zvisingaenderani nemaitiro anowanzoshandiswa "(s1 == NULL) || (s2 == NULL)". Kodhi yacho yakaratidzawo kusawirirana muzvirevo "(-2 == rv)" (minus yaive typo) uye "BIO_puts(bp, ":") <= 0)" (muchirevo chekutarisa kupera kwakabudirira kweiyo basa raifanira kunge riri "== 0").
  • Mu cURL, chikanganiso chakawanikwa chisina kuonekwa nevaongorori vakamira pakushandisa chimiro che "s->keepon", chaive nenhamba yemhando, asi yakaenzaniswa neiyo boolean value TRUE.

Pakati pezvimiro zveiyo ControlFlag 1.0 vhezheni, pane kutsigirwa kwakazara kweakajairwa matemplate emutauro weC uye kugona kuona kusanzwisisika mune inomisikidzwa "kana" mataurirwo. Semuenzaniso, paunenge uchiongorora chidimbu chekodhi "kana (x = 7) y = x;" Iyo sisitimu inozoona kuti chirevo che "kana" chinowanzo shandisa "variable == nhamba" kuvaka kuenzanisa nhamba dzenhamba, saka zvine mukana mukuru wekuti "variable = nhamba" mukutaura kwe "kana" inokonzerwa netaipa. Iyo kit inosanganisira script inobvumidza iwe kudhawunirodha iripo C mutauro repositori paGitHub uye uishandise kuvaka modhi. Yakagadzirirwa-yakagadzirwa modhi inowanikwawo, ichikutendera iwe kuti utange nekukurumidza kutarisa iyo kodhi.

Source: opennet.ru

Voeg