Intel e butse khoutu ea ho ithuta mochini oa ControlFlag ho tsebahatsa litšitšili khoutung

Intel e sibollotse tsoelo-pele e amanang le morero oa lipatlisiso oa ControlFlag o reretsoeng ho theha mokhoa oa ho ithuta mochine ho ntlafatsa boleng ba khoutu. Setsi sa lithulusi se lokiselitsoeng ke morero se lumella, ho ipapisitse le mohlala o koetlisitsoeng ka palo e kholo ea khoutu e teng, ho tseba liphoso le liphoso tse fapaneng litemaneng tsa mohloli tse ngotsoeng ka lipuo tsa maemo a holimo joalo ka C / C ++. Sistimi e loketse ho tsebahatsa mefuta e fapaneng ea mathata ka khoutu, ho tloha ho khetholleng typos le mefuta e sa nepahalang ea mefuta, ho fihlela ho khetholla licheke tsa boleng ba NULL tse sieo ho lintlha le mathata a mohopolo. Khoutu ea ControlFlag e ngotsoe ka C++ 'me e bulehile ka tlas'a laesense ea MIT.

Sistimi ena e ithutoa ka ho aha mohlala oa lipalo-palo oa lenane le teng la khoutu ea merero e bulehileng e phatlalalitsoeng ho GitHub le lipolokelo tsa sechaba tse tšoanang. Sethaleng sa koetliso, tsamaiso e etsa qeto ea mekhoa e tloaelehileng ea ho haha ​​​​mehaho ka khoutu mme e haha ​​​​sefate sa syntactic sa likamano pakeng tsa mekhoa ena, e bontšang phallo ea ts'ebetso ea khoutu lenaneong. Ka lebaka leo, ho thehoa sefate sa ho etsa liqeto tsa litšupiso se kopanyang phihlelo ea tsoelo-pele ea mekhoa eohle e hlahlobiloeng ea mohloli.

Khoutu e ntseng e hlahlojoa e etsa ts'ebetso e ts'oanang ea ho khetholla lipaterone tse hlahlojoang khahlano le sefate sa qeto ea litšupiso. Ho se lumellane ho hoholo le makala a boahelani ho bontša ho ba teng ha anomaly ka mokhoa o hlahlojoang. Sistimi e boetse e u lumella hore u se ke ua tseba feela phoso ka template, empa hape le ho fana ka maikutlo a tokiso. Ka mohlala, ho khoutu ea OpenSSL, mohaho "(s1 == NULL) ∧ (s2 == NULL)" o ile oa khetholloa, o hlahang sefateng sa syntax ka makhetlo a 8 feela, ha lekala le haufi ka ho fetisisa le nang le boleng "(s1 == NULL) | (s2 == NULL)” e etsahetse ka makhetlo a ka bang likete tse 7. Sistimi e boetse e fumane phoso "(s1 == NULL) | (s2 == NULL)” e hlahileng ka makgetlo a 32 sefateng.

Intel e butse khoutu ea ho ithuta mochini oa ControlFlag ho tsebahatsa litšitšili khoutung

Ha o sekaseka sekhechana sa khoutu "haeba (x = 7) y = x;" Sistimi e entse qeto ea hore moaho oa "variable == number" hangata o sebelisoa ho opareitara ea "haeba" ho bapisa lipalo, kahoo ho na le monyetla o moholo oa hore pontšo ea "variable = nomoro" polelong ea "haeba" e bakoa ke thaepa. Traditional static analyzers ba ka be ba ile ba tšoara phoso e joalo, empa ho fapana le bona, ControlFlag ha e sebelise melao e lokiselitsoeng, eo ho leng thata ho fana ka likhetho tsohle tse ka khonehang, empa e itšetlehile ka lipalo-palo tsa tšebeliso ea mehaho e sa tšoaneng ka palo e kholo. tsa merero.

E le teko, ho sebelisa ControlFlag mohloling oa mohloli oa ts'ebeliso ea cURL, eo hangata e boleloang e le mohlala oa khoutu ea boleng bo phahameng le e lekiloeng, phoso e sa lemohuoang ke bahlahlobisisi ba static e ile ea tsejoa ha ho sebelisoa sebopeho sa "s->keepon", e neng e e-na le mofuta oa linomoro, empa e bapisoa le boleng ba Boolean TRUE . Khoutung ea OpenSSL, ntle le bothata bo boletsoeng ka holimo bo nang le "(s1 == NULL) ∧ (s2 == NULL)", li-anomalies le tsona li ile tsa bonoa polelong "(-2 == rv)" (minus e ne e le a typo) le "BIO_puts(bp, ":")

Source: opennet.ru

Eketsa ka tlhaloso