From: agiersch Date: Wed, 1 Dec 2010 22:00:55 +0000 (+0000) Subject: Fix memory errors in gras_os_myname. X-Git-Tag: v3.6_beta2~1063 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/7ecb879843b722bc1e5557972bd1c14af909e895?hp=59f47584879faaa9c68fe922664b3394a67237eb Fix memory errors in gras_os_myname. - Use a static buffer to avoid unfree'd buffer on exit. - Use strncpy instead of strncat when myname might be uninitialized. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8849 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/gras/Virtu/rl_dns.c b/src/gras/Virtu/rl_dns.c index a92784b605..8e7f9e96aa 100644 --- a/src/gras/Virtu/rl_dns.c +++ b/src/gras/Virtu/rl_dns.c @@ -14,12 +14,11 @@ const char *gras_os_myname(void) { - static char *myname = NULL; + static char myname[255]; + static int initialized = 0; - if (myname) - return (const char *) myname; - - myname = xbt_new(char, 255); + if (initialized) + return myname; if (gethostname(myname, 255) == -1) { #ifdef HAVE_SYS_SOCKET_H @@ -32,7 +31,7 @@ const char *gras_os_myname(void) endhostent(); if (tmp) { - strncat(myname, tmp->h_name, 255); + strncpy(myname, tmp->h_name, 255); } else { /* Erm. localhost cannot be resolved. There's something wrong in the user DNS setting */ sprintf(myname, "(misconfigured host)"); @@ -44,5 +43,6 @@ const char *gras_os_myname(void) myname[254] = '\0'; + initialized = 1; return myname; }