From 7ecb879843b722bc1e5557972bd1c14af909e895 Mon Sep 17 00:00:00 2001 From: agiersch Date: Wed, 1 Dec 2010 22:00:55 +0000 Subject: [PATCH 1/1] 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 --- src/gras/Virtu/rl_dns.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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; } -- 2.20.1