ABA


"קבלו כושלה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10034 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10034
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   13:28   21.08.10   
אל הפורום  
  קבלו כושלה  
 
   עבר עריכה לאחרונה בתאריך 22.08.10 בשעה 13:28:36 על-ידי Net_Boy (מנהל הפורום)
 
כושלה שראיתי השבוע בקוד של מישהו
נניח ו - doLogic עושה לוגיקה מסובכת ומחזירה 0 בכשלון, 1 בהצלחה.

#include <iostream>

#define TRACE_IF_ERR(exp) \
if (!exp) { \
printf("Fatal error! Function returned %d\n",xp); } \


bool doLogic() {
if (1==2) {
return true;
}

return false;
}


int main() {
TRACE_IF_ERR(doLogic());

return 0;
}

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  יאיי לירן!!! D= ronen333  21.08.10 14:25 1
  מה שאני חושב ג'וני הקטן 21.08.10 14:28 2
     למה שהוא יריץ פעמיים? ronen333  21.08.10 14:43 3
         אההההההההה ח הבנתי ronen333  21.08.10 14:53 4
             ואם הפונקציה הזו עושה משהו קריטי כמו שחרור זכרון? Sn00py  21.08.10 15:35 5
                 מגניב :) ג'וני הקטן 21.08.10 16:36 6
                 נייס ronen333  21.08.10 18:00 7
  בהזדמנות זו נזכיר, Deuce  21.08.10 20:02 8
     חחח זה ידוע.. ronen333  21.08.10 20:11 9
     כלל ראשון בחשבון כפל וחילוק ראשון (: Frozen_Prince  25.08.10 04:01 11
  אכן נחמד ומוכר, Keep em coming :) (ל''ת) Net_Boy  22.08.10 21:13 10

       
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   14:25   21.08.10   
אל הפורום  
  1. יאיי לירן!!! D=  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 21.08.10 בשעה 14:37 בברכה, ronen333
 
סוף סוף כושלה.. תודה רבה D=

אמ , עכשיו לגבי הקוד-
טוב, אני חושב שהטעות הגורלית פה היא בעצם שאתה מחכה לתשובת זמן ריצה ומנסה להריץ אותה על קדם-מעבד.
זה פשוט לא אפשרי :|
לכן אתה מקבל תשובה שגויה, שלמעשה אתה "אמור לא לקבל".

עדכון:
טוב הזכרון שלי פשוט בגד בי במקרה הזה.. לא יודע למה.
אני האמת שלא רואה איפה הבעיה פה.. זה עושה מה שנדרש מימנו לא?
כלומר doLogic מחזיר False
TRACE_IF_ERR מקבל False ולכן נכנס לIF.. ומדפיס 0 כלומר FALSE.

אני לא חובב מושבע של מmacros.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות
   14:28   21.08.10   
אל הפורום  
  2. מה שאני חושב  
בתגובה להודעה מספר 0
 
   היות וDEFINE פשוט אומר שהקומפיילר הולך ומחליף את כל מה שכתבת במשהו אחר...
הרי שהוא יריץ את השורה doLogic() פעמיים... פעם אחת בIF ופעם שניה בPRINTF...
מה שאומר שתאורתית יש מצב שאתה לא תקבל את אותה התשובה...
מה עוד שדיי מסוכן להשתמש במאקרו בגלל שאתה לא בודק סוג משתנה ^^ אבל זה כבר משהו אחר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   14:43   21.08.10   
אל הפורום  
  3. למה שהוא יריץ פעמיים?  
בתגובה להודעה מספר 2
 
   אני לא מבין..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   14:53   21.08.10   
אל הפורום  
  4. אההההההההה ח הבנתי  
בתגובה להודעה מספר 3
 
   נכון.. צודק במליו אחוז :P.

זה לא טעות אבל.. זה סתם בזבוז.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   15:35   21.08.10   
אל הפורום  
  5. ואם הפונקציה הזו עושה משהו קריטי כמו שחרור זכרון?  
בתגובה להודעה מספר 4
 
   יהיה לך double free, משם הדרך לניצול double free vulnerability קצרה מאוד - הרצת קוד

בקיצור, זאת אכן הכושלה, צריך להזהר

אגב, ראיתי את הדבר הזה בדיוק בדברים מאוד נפוצים, לדוגמה, בקרנל של אחת הפצות הlinux החדישות - גם שם, הם עשו free בתוך מאקרו שקרא פעמיים לfree, ויצר שם חולשה מסוכנת מאוד.

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות
   16:36   21.08.10   
אל הפורום  
  6. מגניב :)  
בתגובה להודעה מספר 5
 
   לא חשבתי ספציפית על DOUBLE FREE אבל באופן כללי חשבתי שזה יכול ליצור בעיות חח

בכל מקרה, מחכה לכושלה הבאה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   18:00   21.08.10   
אל הפורום  
  7. נייס  
בתגובה להודעה מספר 5
 
   תודה רבה לירן, תמשיך להפציץ.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   20:02   21.08.10   
אל הפורום  
  8. בהזדמנות זו נזכיר,  
בתגובה להודעה מספר 0
 

"Six by nine. Forty-two."
"That's it. That's all there is."

#define SIX 1 + 5
#define NINE 8 + 1


int main()
{
printf( "The meaning of life: %d\\n", SIX * NINE );
return( 0 );
}






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   20:11   21.08.10   
אל הפורום  
  9. חחח זה ידוע..  
בתגובה להודעה מספר 8
 
   תמיד חייב להוסיף סוגריים בביטויים כאלה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Frozen_Prince 
חבר מתאריך 11.5.06
5341 הודעות
   04:01   25.08.10   
אל הפורום  
  11. כלל ראשון בחשבון כפל וחילוק ראשון (:  
בתגובה להודעה מספר 8
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   21:13   22.08.10   
אל הפורום  
  10. אכן נחמד ומוכר, Keep em coming :) (ל''ת)  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 22.08.10 בשעה 21:26 בברכה, Net_Boy
 
ויישרתי לך את הקוד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net