Gå til innhold

buffer overrun beskytelse


Anbefalte innlegg

Jeg har for tiden prøvd å sette meg inn i buffer overrun problemet. Så det jeg lurer på er hvor mye burde man egentlig beskytte seg mot dette problemet? Burde man fks. bytte ut alle string/minne operasjonen med en sikrere versjon, eller holder det med bytte ut operasjonene som har med nettverket å gjøre?

Lenke til kommentar
Videoannonse
Annonse

bruk std::string istedetfor char* og std::vector<T> istedetfor T* osv.

det garanterer ikke at du ikke kan gjøre noe dumt og fortsatt få buffer overrun, men det gjør det mye lettere for deg å programmere "sikkert" samtidig som det går mye fortere siden du generelt har mindre sjangse for å gjøre noe feil og slipper debugging hele tida

Lenke til kommentar

Beklager at jeg var litt uklar, men jeg tenkte på det samme som Nazgul

 

  Men han har rett i at først må ting puttes inn i en std::string før det er sikkert.

Ta f.eks. sockets. Der er du nødt til å opperere med char arrays før du kan putte arrayet ditt inn i en std::string. Dersom du leser mer enn du har allokert, er du ille ute.

Men dette gjelder jo andre ting også som fks. fopen

Lenke til kommentar

Vi bruker da ikke fopen i C++!

std::fstream er din venn.

 

Eneste stedet jeg kan tenke meg at du må bruke char arrays in fstream er i read(), som du strengt tatt bare bruker når du driver med binæropperasjoner(Gjelder ihvertfall meg), og da lager du bare en liten wrapper, som dayslepr sa.

Endret av Nazgul
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...