je dois inclure une fonction C dans mon programme C++, lors de la compilation du code avec g ++ je reçois l'avertissement suivant:g ++ + strncat: risque de déborder le tampon de destination
In function ‘char* strncat(char*, const char*, size_t)’,
inlined from ‘int get_usage(pid_t, pstat*)’ at src/getusage.c:24:
/usr/include/bits/string3.h:154: warning: call to
char* __builtin___strncat_chk(char*, const char*, long unsigned int,
long unsigned int) might overflow destination buffer
code:
int pidof(const char* process_name){
char cmd[50] ="pidof ";
strncat(cmd, process_name, sizeof(cmd) - strlen(cmd) -1);
[..]
Comment puis-je me débarrasser de cet avertissement?
Bienvenue dans StackOverflow! S'il vous plaît regardez autour de la FAQ: http://stackoverflow.com/faq –
ouh, erreur stupide :) J'ai mal lu l'erreur msg, l'erreur était sur une autre utilisation de strncat où j'ai seulement passé la taille du tampon comme paramètre de taille => fixe :) – fho
Vous devriez utiliser std :: string. Ils sont plus faciles à utiliser. Ont construit en soutien à la concaténation et ils sont également plus sûrs à utiliser. – bruno