Siideynta ControlFlag 1.0, oo ah qalab lagu garto khaladaadka ku jira code C

Intel ayaa daabacday sii dayntii ugu horreysay ee ugu horreysay ee qalabka ControlFlag 1.0, kaas oo kuu oggolaanaya inaad aqoonsato khaladaadka iyo cilladaha ku jira koodhka isha iyadoo la adeegsanayo nidaamka barashada mashiinka oo lagu tababaray tiro badan oo kood ah. Si ka duwan falanqeeyayaasha caadiga ah ee caadiga ah, ControlFlag ma dabaqdo xeerar diyaarsan, taas oo ay adag tahay in la bixiyo dhammaan fursadaha suurtagalka ah, laakiin waxay ku salaysan tahay tirakoobyada isticmaalka luqadaha kala duwan ee dhismooyinka tiro badan oo mashruucyo jira ah. Koodhka ControlFlag wuxuu ku qoran yahay C++ wuxuuna ku furan yahay shatiga MIT.

Nadaamka waxaa lagu tababaray iyadoo la dhisayo qaabka tirakoobka ee koodka jira ee mashruucyo il furan oo lagu daabacay GitHub iyo meelaha kale ee dadweynaha. Marxaladda tababarka, nidaamku wuxuu go'aamiyaa qaababka caadiga ah ee lagu dhisayo qaab-dhismeedka koodhka wuxuuna dhisaa geed isku-dhafan oo isku xira qaababkan, taasoo ka tarjumaysa socodka fulinta code ee barnaamijka. Natiijo ahaan, geed go'aan qaadasho tixraaceed ayaa la sameeyay kaas oo isku daraya waayo-aragnimada horumarineed ee dhammaan koodhadhka isha ee la falanqeeyay. Xeerka dib u eegista lagu hayo waxa uu maraa hab la mid ah oo lagu aqoonsanayo qaababka laga soo eegay geedka go'aanka tixraaca. Farqiga weyn ee laamaha deriska ayaa muujinaya jiritaanka cillad aan caadi ahayn oo ku jirta qaabka la hubinayo.

Siideynta ControlFlag 1.0, oo ah qalab lagu garto khaladaadka ku jira code C

Tusaale ahaan awoodaha ControlFlag, horumariyayaashu waxay falanqeeyeen koodhka isha mashaariicda OpenSSL iyo cURL:

  • Dhismayaal aan caadi ahayn "(s1 == NULL) ∧ (s2 == NULL)" iyo "(s1 == NULL) | (s2 == NULL)" , oo aan ku habboonayn qaabka caadiga ah ee la isticmaalo "(s1 == NULL) || (s2 == NULL)". Xeerku waxa kale oo uu tilmaamay cilladaha ku jira tibaaxaha "(-2 == rv)" (laga jaray waxay ahayd typo) iyo "BIO_puts(bp, ":") <= 0)" (marka la eego macnaha guud ee hubinta dhamaystirka guusha leh ee Shaqadu waxay ahayd inay ahaato "== 0").
  • Gudaha CURL, waxaa la ogaaday qalad aysan helin falanqeeyayaasha joogtada ah marka la isticmaalayo qaybta qaabdhismeedka "s->keepon", kaas oo lahaa nooc nambaro ah, laakiin la barbardhigay qiimaha boolean TRUE.

Waxaa ka mid ah astaamaha nooca ControlFlag 1.0, waxaa jira taageero buuxda oo loogu talagalay jaangooyooyinka caadiga ah ee luqadda C iyo awoodda lagu ogaanayo cilladaha ku jira tibaaxaha "haddii". Tusaale ahaan, marka la falanqeynayo jajabka koodka "if (x = 7) y = x;" Nidaamku wuxuu go'aamin doonaa in "haddii" bayaanku uu inta badan isticmaalo dhismaha "la beddeli karo == nambarka" si loo barbardhigo qiyamka tirooyinka, sidaas darteed waxay aad ugu badan tahay in "beddeli karo = lambar" ee "haddii" tibaaxaha uu keeno qoraal. Qalabka waxaa ku jira qoraal kuu ogolaanaya inaad soo dejiso kaydka luqadda C ee jira GitHub oo aad u isticmaasho si aad u dhisto moodelka. Moodooyinka diyaarsan ayaa sidoo kale diyaar ah, kuwaas oo kuu oggolaanaya inaad isla markiiba bilowdo hubinta koodka.

Source: opennet.ru

Add a comment