Tu as au moins vu le problème ? Parce que figure toi que le problème, il ne vient pas du strcpy() ...
L'argument de func() est en fait arg1, qui compte 8 caractères. Et arg1 est recopié dans buffer, qui en fait 12. Donc pas de problème (ou presque ;-)
Mais pour te faire plaisir, voici un autre exemple tiré du même article (et tu devrais vraiment aller acheter MISC ;-)
[^] # Un autre ? Pas de pb :)
Posté par pappy . En réponse à la dépêche Failles de sécurité dans openssl. Évalué à 2.
Tu as au moins vu le problème ? Parce que figure toi que le problème, il ne vient pas du strcpy() ...
L'argument de func() est en fait arg1, qui compte 8 caractères. Et arg1 est recopié dans buffer, qui en fait 12. Donc pas de problème (ou presque ;-)
Mais pour te faire plaisir, voici un autre exemple tiré du même article (et tu devrais vraiment aller acheter MISC ;-)
1 #include <stdio.h>
2 #include <string.h>
3
4 func(char *sm) {
5 char buffer[128]="kab00m!!";
6 char entry[1024];
7
8 strncpy(entry, sm, sizeof(entry)-1);
9 entry[sizeof(entry)-1] = '0円';
10
11 strncat(buffer, entry, sizeof(buffer)-strlen(buffer));
12
13 printf ("%s\n", buffer);
14 }
15
16 main(int argc, char *argv[])
17 {
18
19 if (argc > 1) func(argv[1]);
20
21 }
Que du strn*(),ça devrait te plaire :)
Et pourtant ...