ما هو عنصر الفيض؟

هذه أسئلة وأجوبة وكان الجواب الذي كتبه k4thryn :

عنصر الفائض أو integer التغليف ، هي مشكلة محتملة في برنامج يستند إلى حقيقة أن القيمة التي يمكن أن تعقد في بيانات رقمية محدودة بسبب نوع البيانات في حجم بايت. وتستخدم المؤسسة الأمريكية الوطنية للمقاييس جيم الأحجام الدنيا التالية :

نوع البيانات الحجم (بايت)
تشار 1
قصير 2
int 2
طويل 4

في الواقع ، تستخدم كثير من المجمعين 4 بايت int. كما ينبغي ملاحظة أن يتراوح الفعلية لأنواع البيانات تعتمد على ما إذا كانت أو لم تكن وقعت. على سبيل المثال ، وقعت 2 بايت قصيرة قد تكون بين -32767 و 32767 ، في حين أنه قد يكون من غير موقع القصير بين 0 و 65535. انظر الخاص بك [تشمل] / limits.h ملف لأرقام محددة للمجمع الخاص بك.

لماذا يجب أن يهمك الأمر؟ إذا كنت في محاولة لوضع القيمة إلى نوع البيانات التي هي صغيرة جدا لا تتسع لذلك ، من أجل بت عالية تسقط ، وفقط من أجل بت المنخفضة يتم تخزين. طريقة أخرى لقول ذلك هو أن مودولو بين الحساب يقوم على قيمة قبل تخزينه للتأكد من تناسبها ضمن البيانات. مع الأخذ في غير موقع القصير لدينا على سبيل المثال :

الحد : 65535 أو 1111 1111 1111 1111
كبير جدا : 65536 أو 1 0000 0000 0000 0000
ما تم تخزينه : 0 أو 0000 0000 0000 0000

كما ذكر أعلاه يجعل من الواضح أن النتيجة العالية لأن النظام (أو اليسار أكثر) نوعا من قيمة كبيرة جدا وهذا هو أسقطت. أو هل يمكن القول إن ما تم تخزينه هو نتيجة

  = القيمة المخزنة في المائة (الحد + 1) 
  أو 
  65536 ٪ (65535 + 1) = 0 

وقعت في أنواع البيانات ، وكانت النتيجة مختلفة قليلا ، وبعض النتائج التي تبدو غريبة في السلوك :

الحد الإيجابي : 32767 أو 0111 1111 1111 1111
كبير جدا : 32768 أو 1000 0000 0000 0000
ما تم تخزينه : -32768

لماذا قال ذلك؟ انه بسبب "2's مجاملة "، وهي طريقة سلبية تتمثل في الأعداد الثنائية. لتقديم قصة قصيرة طويلة ، وخلال النصف الأول من مجموعة (0 من خلال 0111 1111 1111 1111) وتستخدم لاعداد ايجابية من أجل لأقل من أعظم. النصف الثاني من مجموعة ثم يتم استخدام الأرقام السلبية لأجل لأقل من أعظم. حتى السلبية لطائفة وقعت 2 بايت هو -32768 قصيرة خلال -1 ، في هذا النظام.

كنت نسأل لماذا لا تزال هذه المسائل ، ليست لك؟ لنفترض أن يجري تخصيص الذاكرة على أساس نوع بيانات غير موقعة integer قيمة. إذا كانت هذه القيمة قد لف حولها ، قد يكون ذلك إلا قدرا ضئيلا جدا من الذاكرة وسوف تتاح. أو إذا كان يجري مقارنة بين التوقيع على قيمة وعدد آخر ، على افتراض أن الرئيس السابق يجب ان يكون اقل من هذه الأخيرة ، إذا كانت هذه القيمة في الطيران سلبيا ، مقارنة ستنتقل. ولكن هناك اشياء اخرى على التصرف بالطريقة التي يقصد مبرمج؟ ربما لا.

مصادر إضافية للمعلومات عن Integer الفيضانات

في الوقت الذي يخرج عن نطاق هذا المقال ، وهناك غيرها من الموارد التي تذهب إلى مزيد من التفاصيل عن integer الفائض البق ، والوقاية منها ، واستغلالها. أي أن هناك اثنين من مواد مثيرة للاهتمام في Phrack # 60 (واحد من قبل عوديد Horovitz ، من جانب واحد blexim) integer الفائض الضعف. اختتام Integer أيضا مشمولة في "شفرة المصدر المراجعة المهنية" عرضا من الولايات المتحدة الأمريكية 2002 قبعة سوداء إحاطات (دود آخرين als).

أداة لتجربة مع Integer الفيضانات

البرنامج int_wrap.c يسمح لك للعب مع حول هذا السلوك عن طريق تحديد ما اذا كان سطر نوع البيانات (القصير) يجب أن لا تحمل توقيعا أو وقعت ، والقيمة التي تريد استخدامها.

ملاحظة : يبدو أن بيرل يكون الرقم 250 على الحد من أعداد ، ويموت مع الخطأ "عدد طويل جدا" (اختبار النسخة 5.8.0). ومع ذلك ، فإن عددا كبيرا من أرقام أقل بكثير من ذلك.

كتابة الرمز الآمن تأمين بناء البرمجيات تأمين ترقيمها تأمين برمجة كتاب الطبخ
شراء هذه الكتب الممتازة على تأمين البرمجة في Amazon.com


أعلى 5 الحرة أدوات الربط الشبكي

ضعف إدارة لالدمى

أصدقائنا في Qualys تقدم نسخة مجانية من النسخة الإلكترونية من التعرض لالدمى لإدارة التكنولوجيا أسئلة وأجوبة القراء.

ضعف إدارة لالدمى :

  • ويوضح الحاجة الماسة لضعف الإدارة
  • التفاصيل الأساسية لأفضل الممارسات من خطوات ناجحة ضعف إدارة البرنامج
  • الخطوط العريضة لمختلف حلول إدارة الضعف -- بما في ذلك مزايا وعيوب كل
  • ويبرز الحائز على جائزة QualysGuard ضعف إدارة حل
  • ويوفر عشرة النقطة المرجعية لإزالة أوجه الضعف الخاصة بك من الموارد الرئيسية
احفظ ما هو عنصر الفيض؟

آخر رابط الوظائف


إنجليزي إنجليزي الألمانية الألمانية الأسبانية الأسبانية الفرنسية الفرنسية الايطالية الايطالية البرتغالية البرتغالية الروسية الروسية الهولندية الهولندية
اليونانية اليونانية الهندية الهندية اليابانية اليابانية الكورية الكورية الصينية الصينية الصينية (المبسطة) الصينية (المبسطة) العربية العربية

حقوق الطبع والنشر 2009 التكنولوجيا أسئلة وأجوبة. جميع الحقوق محفوظة سياسة الخصوصية.