د ControlFlag 1.0 خوشې کول، په C کوډ کې د غلطیو پیژندلو وسیله

انټیل د ControlFlag 1.0 وسیلې لومړۍ لوی خپرونه خپره کړې ، کوم چې تاسو ته اجازه درکوي د سرچینې کوډ کې غلطۍ او ګډوډي وپیژني د ماشین زده کړې سیسټم په کارولو سره چې د موجوده کوډ لوی مقدار باندې روزل شوي. د دودیز جامد تحلیل کونکو برعکس ، ControlFlag چمتو شوي مقررات نه پلي کوي ، په کوم کې چې د ټولو ممکنه اختیارونو چمتو کول ستونزمن دي ، مګر په ډیری موجوده پروژو کې د مختلف ژبو جوړښتونو کارولو احصایو پراساس دي. د کنټرول فلګ کوډ په C++ کې لیکل شوی او د MIT جواز لاندې خلاص سرچینه ده.

سیسټم د GitHub او ورته عامه زیرمو کې خپاره شوي د خلاصې سرچینې پروژو د موجوده کوډ لړۍ احصایوي ماډل رامینځته کولو سره روزل کیږي. د روزنې په مرحله کې، سیسټم په کوډ کې د جوړښتونو د جوړولو لپاره ځانګړي نمونې ټاکي او د دې نمونو تر منځ د ارتباط یو ترکیبي ونې جوړوي، چې په پروګرام کې د کوډ اجرا کولو جریان منعکس کوي. د پایلې په توګه، د حوالې پریکړه کولو ونې رامینځته کیږي چې د ټولو تحلیل شوي سرچینې کوډونو پراختیا تجربه سره یوځای کوي. د بیاکتنې لاندې کوډ د نمونو پیژندلو ورته پروسې څخه تیریږي چې د حوالې پریکړې ونې په وړاندې چک شوي. د ګاونډیو څانګو سره لوی توپیرونه په چک شوي نمونه کې د بې نظمۍ شتون په ګوته کوي.

د ControlFlag 1.0 خوشې کول، په C کوډ کې د غلطیو پیژندلو وسیله

د ControlFlag وړتیاوو د مثال په توګه، پراختیا کونکو د OpenSSL او cURL پروژو سرچینې کوډونه تحلیل کړل:

  • غیرمعمولي جوړښتونه "(s1 == NULL) ∧ (s2 == NULL)" او "(s1 == NULL) | (s2 == NULL)"، کوم چې د عام کارول شوي نمونې سره سمون نه لري "(s1 == NULL) || (s2 == NULL)" کوډ د "(-2 == rv)" (منفی یو ټایپو وه) او "BIO_puts(bp, ":") <= 0)" (د بریالیتوب بشپړیدو چک کولو په شرایطو کې) کې هم ګډوډي په ګوته کړې. فعالیت دا باید "== 0" وي).
  • په CURL کې، یوه تېروتنه وموندل شوه چې د جامد شنونکو لخوا نه وه کشف شوې کله چې د جوړښت عنصر "s->keepon" کاروي، کوم چې د شمیرې ډول درلود، مګر د بولین ارزښت سره پرتله شوی و.

د ControlFlag 1.0 نسخې د ځانګړتیاوو په منځ کې، د C ژبې لپاره د معیاري ټیمپلیټونو لپاره بشپړ ملاتړ شتون لري او په مشروط "که" بیانونو کې د ګډوډۍ موندلو وړتیا شتون لري. د مثال په توګه، کله چې د کوډ ټوټه تحلیل کړئ "که (x = 7) y = x؛" سیسټم به وټاکي چې د "که" بیان معمولا د "متغیر == شمیره" ساختمان د عددي ارزښتونو پرتله کولو لپاره کاروي، نو دا خورا احتمال لري چې د "که" بیان کې "متغیر = شمیره" د ټایپو له امله رامینځته شوی وي. کټ کې یو سکریپټ شامل دی چې تاسو ته اجازه درکوي په GitHub کې د C ژبې موجوده ذخیره ډاونلوډ کړئ او د ماډل جوړولو لپاره یې وکاروئ. چمتو شوي ماډلونه هم شتون لري ، تاسو ته اجازه درکوي سمدلاسه د کوډ چیک کول پیل کړئ.

سرچینه: opennet.ru

Add a comment