ΕΕΛ/ΛΑΚ - Λίστες Ταχυδρομείου

Re: Gcc 4.6 (Ubuntu)

Στις 18 Οκτωβρίου 2011 11:56 π.μ., ο χρήστης Christos Ricudis
<ricudis [ at ] itc [ dot ] auth [ dot ] gr> έγραψε:
>
>> Το β) ήταν μια global μεταβλητή που μετά το free δεν την έκανα NULL σε
>> ένα σημείο και την επόμενη φορά που έμπαινε στη συνάρτηση το έβλεπε
>> initialized και το έκανε free κάνοντας corrupt το stack. Από τύχη δε
>> βάραγε μάλλον με τους προηγούμενους compilers αλλά το φελέκι μου 2
>> εκδόσεις του gcc σε δυο διαφορετικές αρχιτεκτονικές, πόσες είναι οι
>> πιθανότητες ? :P
>
>
> Να τη γλυτωσεις με double free? Αρκετες ωστε να σου δημιουργησουν προβλημα.
>
> Ενα απο τα γνωστα trick ειναι να φτιαξεις μια δικια σου συναρτηση που
> kanei if (julian_assange) { free(julian_assange);julian_assange=NULL; },
> αλλα μετα πρεπει να βεβαιωθεις οτι χρησιμοποιειται consistently.
>
> Το σωστο ειναι να ξανασκεφτεις τη λογικη σου. Δεν μου εχει προκυψει
> μεχρι τωρα περιπτωση που να χρειαστηκαν τετοια guards σε memory
> allocation / deallocation και να μην μπορουσε η ροη να διατυπωθει καπως
> διαφορετικα ωστε να γλυτωσω απο το προβλημα.

H OpenSSL gia na kanei abstract to I/O exei ena layer pou to leei BIO
api kai me ayto kaneis tis diafores douleies pou xreiazesai (to
antistoixo sth GnuTLS einai to datum, mono pou ekei einai poio
"katharo"), praktika einai ena buffer pou to kaneis access me
diaforetikous tropous kathe fora analoga me to resource kai to petas
meta opws einai gia parsing. Etsi px gia na peraseis sthn OpenSSL ena
arxeio prepei na ftiakseis ena BIO, na to "gemiseis" me thn antistoixh
synarthsh gia files kai na to kaneis parse me kapoia ap tis
diathesimes synarthseis ths vivliothikhs gia na pareis to antistoixo
struct. Enalaktika mporeis na exeis ena memory BIO kai na
diavazeis/katevazeis arxeia mesa se ayto (exei mia fwrite dikia tou as
poume) gia poio genikh xrhsh. Etsi se ena shmeio tou kwdika pou exw
poly I/O (fortwnw certificates/csrs/crls/pkcs8 keys apo arxeia, urls,
LDAP uris, pkcs11 tokens h kai apo xyma DER encoded data) exw ena
global BIO pointer pou to xrhsimopoiw kathe fora pou to xreiazomai, to
kanw initialize sthn arxh ths kathe synarthshs kai free/NULL sto
telos. E se mia synarthsh to ekana free alla oxi NULL me apotelesma se
epomenh synarthsh, enw den xrhsimopoiountan (kai ara de ginotan
initialize), to eblepe non-NULL sto telos kai ekane corrupt to stack.

Tha mou peis twra giati na exw ena global kai na mh to exw local se
kathe synarthsh pou xreiazetai, mia grammh ypothesh einai. Pes to
proswpiko vitsio, mou fainetai poio katharo kai aplo etsi kai einai
kai poio eykolo na to kanw track. Epishs tha mou peis kakws emplekses
se mia synarthsh kati pou sou einai endexomenws axrhsto, tha eprepe na
to exeis se allh synarthsh gi ayth th douleia kai mono kai tha exeis
dikio, apla thelei akoma katharisma o kwdikas kai se ekeinh th fash
hthela na dw ena sygekrimeno test case prin proxwrisw.


-- 
GPG ID: 0xEE878588
As you read this post global entropy rises. Have Fun ;-)
Nick

αναφορές

πλοήγηση μηνυμάτων