Ich habe vor kurzem einen Universitätskurs in C absolviert, daher fehlt mir natürlich die Erfahrung.
Einige Universitäten neigen dazu, ihren Studenten sicheres Programmieren beizubringen, oder zumindest einige Elemente . Es gibt sogar ein Video (entnommen aus ici ).
Das Kopieren von Strings in C erfordert - soweit ich weiß - die Funktionen strcpy oder string.h. Wie verwenden Sie es sicher in der alltäglichen Programmierung? Gibt es Funktionen, die die Zuweisung so handhaben, dass Pufferüberläufe verhindert werden? Es gibt die CERT-Standard für sichere Kodierung für C . Sie bietet Beispiele und konforme Lösungen:
int main(int argc, char *argv[]) {
/* ... */
char prog_name[128];
strcpy(prog_name, argv[0]);
/* ... */
}
Und ihre Alternative ist:
int main(int argc, char *argv[]) {
/* ... */
char *prog_name = (char *)malloc(strlen(argv[0])+1);
if (prog_name != NULL) {
strcpy(prog_name, argv[0]);
}
else {
/* Couldn't get the memory - recover */
}
/* ... */
}
Entnommen von hier, 2. Beispiel .
Aber soweit ich das verstehe, ist das nur eine größere Herausforderung, mehr Code, mehr Arbeit. Warum ändert niemand die Bibliothek selbst? Oder warum stellt zumindest niemand eine sichere alternative Bibliothek oder Funktionen bereit, die das richtig handhaben?
Vielen Dank für die Lektüre, wishi