Nanokatra ny kaody rafitra fianarana milina ControlFlag i Intel mba hamantarana ireo bibikely ao amin'ny kaody

Intel dia nahita fivoarana mifandraika amin'ny tetikasa fikarohana ControlFlag, mikendry ny hamorona rafitra fianarana milina hanatsarana ny kalitaon'ny kaody. Ny kitapom-pitaovana nomanin'ny tetikasa dia mamela, mifototra amin'ny maodely voaofana amin'ny kaody efa misy be dia be, hamantatra ny lesoka sy ny anomaliana isan-karazany amin'ny lahatsoratra loharano nosoratana tamin'ny fiteny avo lenta toy ny C/C++. Ny rafitra dia mety amin'ny famantarana ireo karazana olana isan-karazany amin'ny kaody, manomboka amin'ny fitadiavana ny typos sy ny fampifangaroana karazana tsy mety, ka hatramin'ny fitadiavana ny fanamarinana NULL tsy hita ao amin'ny tondro sy ny olana amin'ny fitadidiana. Ny kaody ControlFlag dia voasoratra amin'ny C ++ ary loharano misokatra eo ambanin'ny lisansa MIT.

Ny rafitra dia mianatra samirery amin'ny alΓ lan'ny fananganana modely statistika amin'ny laharan'ny kaody efa misy amin'ny tetikasa misokatra navoaka tao amin'ny GitHub sy ireo trano fitehirizam-bahoaka mitovy aminy. Eo amin'ny sehatry ny fianarana, ny rafitra dia mamaritra ny lamina mahazatra amin'ny fananganana rafitra ao amin'ny fehezan-dalΓ na ary manangana hazo syntactic misy rohy eo amin'ireo lamina ireo, izay maneho ny fizotran'ny famonoana kaody ao amin'ny programa. Vokatr'izany dia miforona ny hazo fanapaha-kevitra izay manambatra ny traikefa amin'ny fampivelarana ireo lahatsoratra loharano nodinihina rehetra.

Ny kaody andrana dia mandeha amin'ny dingana mitovy amin'ny famantarana ireo lamina izay voamarina amin'ny hazo fanapahan-kevitra. Ny tsy fitovian-kevitra lehibe amin'ny sampana mifanila aminy dia manondro ny fisian'ny tsy fetezana ao amin'ny mΓ΄dely voamarika. Ny rafitra ihany koa dia mamela tsy ny hamantatra ny fahadisoana ao amin'ny mΓ΄dely, fa koa ny soso-kevitra ny fanitsiana. Ohatra, ao amin'ny kaody OpenSSL, hita ny fanorenana "(s1 == NULL) ∧ (s2 == NULL)", izay in-8 ihany no niseho tao amin'ny hazo syntax, raha ny sampana akaiky indrindra misy sanda "(s1 == NULL) || (s2 == NULL)" niseho in-7 arivo teo ho eo. Hitan'ny rafitra ihany koa ny anomaly β€œ(s1 == NULL) | (s2 == NULL)" izay niseho in-32 tao amin'ilay hazo.

Nanokatra ny kaody rafitra fianarana milina ControlFlag i Intel mba hamantarana ireo bibikely ao amin'ny kaody

Rehefa mamaky ny sombin-kaody "raha (x = 7) y = x;" Ny rafitra dia nanapa-kevitra fa ny fananganana "variable == isa" dia matetika ampiasaina amin'ny fanambarana "raha" mba hampitahana ny soatoavina isa, noho izany, miaraka amin'ny vintana lehibe, ny famantarana "variable = isa" amin'ny teny "raha" dia vokatry ny typo iray. Ny mpandinika static nentim-paharazana dia hahazo fahadisoana toy izany, saingy tsy mitovy amin'izy ireo, ny ControlFlag dia tsy mampiasa fitsipika efa vita izay sarotra ny mamantatra mialoha ny safidy rehetra azo atao, fa mifototra amin'ny antontan'isa amin'ny fampiasana karazana fananganana rehetra amin'ny tetikasa marobe. .

Amin'ny maha-andrana azy, amin'ny fampiasana ControlFlag ao amin'ny kaody loharanon'ny utility cURL, izay matetika lazaina ho ohatra amin'ny kaody avo lenta sy voamarina, dia nisy hadisoana tsy hitan'ny mpanadihady static rehefa nampiasa ny singa rafitra "s-> keepon", izay nanana karazana isa, fa nampitahaina tamin'ny sanda boolean TRUE . Ao amin'ny kaody OpenSSL, ankoatry ny olana etsy ambony miaraka amin'ny "(s1 == NULL) ∧ (s2 == NULL)", dia nisy ihany koa ny tsy fitoviana amin'ny teny hoe "(-2 == rv)" (ny minus dia typo ) ary "BIO_puts(bp, ":")

Source: opennet.ru

Add a comment