ڪنٽرول فليگ 1.0 جو رليز، سي ڪوڊ ۾ غلطين جي سڃاڻپ لاءِ هڪ اوزار

Intel ControlFlag 1.0 ٽول جو پهريون وڏو رليز شايع ڪيو آهي، جيڪو توهان کي موجوده ڪوڊ جي وڏي مقدار تي تربيت يافته مشين لرننگ سسٽم استعمال ڪندي سورس ڪوڊ ۾ غلطين ۽ بي ضابطگين کي سڃاڻڻ جي اجازت ڏئي ٿو. روايتي جامد تجزين جي برعڪس، ڪنٽرول فلاگ تيار ڪيل ضابطن کي لاڳو نٿو ڪري، جنهن ۾ سڀني ممڪن اختيارن لاء مهيا ڪرڻ ڏکيو آهي، پر موجوده منصوبن جي وڏي تعداد ۾ مختلف ٻولين جي استعمال جي انگن اکرن تي ٻڌل آهي. ControlFlag ڪوڊ C++ ۾ لکيل آهي ۽ MIT لائسنس تحت کليل ذريعو آهي.

سسٽم کي GitHub ۽ ساڳئي عوامي ذخيرن ۾ شايع ٿيل اوپن سورس منصوبن جي موجوده ڪوڊ صف جي شمارياتي ماڊل تعمير ڪندي تربيت ڏني وئي آهي. ٽريننگ اسٽيج تي، سسٽم ڪوڊ ۾ جوڙجڪ جي تعمير لاء عام نمونن جو تعين ڪري ٿو ۽ انهن نمونن جي وچ ۾ ڪنيڪشن جو هڪ نحوي وڻ ٺاهي ٿو، پروگرام ۾ ڪوڊ جي عمل جي وهڪري کي ظاهر ڪري ٿو. نتيجي طور، ھڪڙو حوالو فيصلو ڪرڻ وارو وڻ ٺاھيو ويو آھي جيڪو سڀني تجزياتي ماخذ ڪوڊ جي ترقي جي تجربي کي گڏ ڪري ٿو. جائزو هيٺ ڏنل ڪوڊ نمونن جي سڃاڻپ جي ساڳئي عمل مان گذري ٿو جيڪي حوالن جي فيصلي واري وڻ جي خلاف چڪاس ڪيا ويا آهن. پاڙيسري شاخن سان وڏيون تفاوت ظاهر ڪن ٿا ته نمونن جي چڪاس ۾ بيضابطگي جي موجودگي.

ڪنٽرول فليگ 1.0 جو رليز، سي ڪوڊ ۾ غلطين جي سڃاڻپ لاءِ هڪ اوزار

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"، جنهن جو هڪ عددي قسم هو، پر ان جو مقابلو ڪيو ويو بوليان قدر TRUE سان.

ControlFlag 1.0 ورزن جي خاصيتن ۾، سي ٻوليءَ لاءِ معياري ٽيمپليٽس لاءِ مڪمل سپورٽ ۽ مشروط ”جيڪڏهن“ اظهارن ۾ بي ضابطگين کي ڳولڻ جي صلاحيت آهي. مثال طور، جڏهن ڪوڊ جي ٽڪري جو تجزيو ڪيو "جيڪڏهن (x = 7) y = x؛" سسٽم اهو طئي ڪندو ته "جيڪڏهن" بيان عام طور تي استعمال ڪري ٿو "متغير == نمبر" تعمير عددي قدرن جي مقابلي لاءِ، تنهنڪري اهو تمام گهڻو امڪان آهي ته "متغير = نمبر" ۾ "جيڪڏهن" اظهار ۾ ٽائپو سبب آهي. کٽ ۾ هڪ اسڪرپٽ شامل آهي جيڪا توهان کي GitHub تي موجود سي ٻولي جي ذخيرن کي ڊائون لوڊ ڪرڻ جي اجازت ڏئي ٿي ۽ انهن کي ماڊل ٺاهڻ لاءِ استعمال ڪري ٿي. تيار ٿيل ماڊل پڻ دستياب آهن، توهان کي فوري طور تي ڪوڊ چيڪ ڪرڻ شروع ڪرڻ جي اجازت ڏئي ٿي.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو