Δημοσιεύτηκε: 07 Σεπ 2011, 17:23
από migf1
Α οκ, λέω κι εγώ :lol:

Λοιπόν, είμαστε ΟΚ με τα NULL κλπ για να προχωρήσουμε;

Να δώσω μια περιληπτική άσκηση να δούμε που βρισκόμαστε...
Κώδικας: Επιλογή όλων

char *s_copy( char *dst, const char *src )
{
char *save = dst;
while ( (*dst++=*src++) )
;
return save;
}

Αυτός ο κώδικας αντιγράφει τα περιεχόμενα του string src στο string dst χωρίς να ελέγχει για ενδεχόμενο buffer-overflow στον dst. Επίσης δεν ελέγχει αν κάποιο ή και τα δύο από τα strings έχουν περαστεί στη συνάρτηση ως NULL.

  1. προσθέστε ελέγχους που θα αποτρέπουν την πρόσβαση σε οποιοδήποτε *dst ή *src αν οι δείκτες που τους αντιστοιχούν είναι NULL
  2. προτείνετε τρόπους ώστε η συνάρτηση να αποτρέπει ενδεχόμενο buffer-overflow στον dst