Commit 03544b3a authored by Ulrich Sibiller's avatar Ulrich Sibiller Committed by Mike Gabriel

Error.c: make nxagentClientsLogName a pointer

no more hardcoded string length
parent 2a4af0c7
...@@ -1296,7 +1296,17 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1296,7 +1296,17 @@ static void nxagentParseSingleOption(char *name, char *value)
} }
else if (strcmp(name, "clients") == 0) else if (strcmp(name, "clients") == 0)
{ {
snprintf(nxagentClientsLogName, NXAGENTCLIENTSLOGNAMELENGTH, "%s", value); char *new = strdup(value);
if (new)
{
SAFE_free(nxagentClientsLogName);
nxagentClientsLogName = new;
}
else
{
fprintf(stderr, "Warning: Ignoring option [%s] because of memory problems\n",
validateString(name));
}
return; return;
} }
else if (strcmp(name, "client") == 0) else if (strcmp(name, "client") == 0)
......
...@@ -79,7 +79,7 @@ static int nxagentClientsLog = -1; ...@@ -79,7 +79,7 @@ static int nxagentClientsLog = -1;
* Clients log file name. * Clients log file name.
*/ */
char nxagentClientsLogName[NXAGENTCLIENTSLOGNAMELENGTH] = { 0 }; char *nxagentClientsLogName = NULL;
/* /*
* User's home. * User's home.
...@@ -250,12 +250,12 @@ int nxagentExitHandler(const char *message) ...@@ -250,12 +250,12 @@ int nxagentExitHandler(const char *message)
void nxagentOpenClientsLogFile(void) void nxagentOpenClientsLogFile(void)
{ {
if (*nxagentClientsLogName == '\0') if (!nxagentClientsLogName)
{ {
nxagentGetClientsPath(); nxagentGetClientsPath();
} }
if (nxagentClientsLogName != NULL && *nxagentClientsLogName != '\0') if (nxagentClientsLogName && *nxagentClientsLogName != '\0')
{ {
nxagentClientsLog = open(nxagentClientsLogName, O_RDWR | O_CREAT | O_APPEND, 0600); nxagentClientsLog = open(nxagentClientsLogName, O_RDWR | O_CREAT | O_APPEND, 0600);
...@@ -553,7 +553,7 @@ char *nxagentGetSessionPath(void) ...@@ -553,7 +553,7 @@ char *nxagentGetSessionPath(void)
void nxagentGetClientsPath(void) void nxagentGetClientsPath(void)
{ {
if (*nxagentClientsLogName == '\0') if (!nxagentClientsLogName)
{ {
char *sessionPath = nxagentGetSessionPath(); char *sessionPath = nxagentGetSessionPath();
...@@ -562,16 +562,17 @@ void nxagentGetClientsPath(void) ...@@ -562,16 +562,17 @@ void nxagentGetClientsPath(void)
return; return;
} }
if (strlen(sessionPath) + strlen("/clients") > NXAGENTCLIENTSLOGNAMELENGTH - 1) /* FIXME: this is currently never freed as it is thought to last
over the complete runtime. We should add a free call at shutdown
eventually... */
int len = asprintf(&nxagentClientsLogName, "%s/clients", sessionPath);
if (len == -1)
{ {
#ifdef PANIC #ifdef PANIC
fprintf(stderr, "nxagentGetClientsPath: PANIC! Invalid value for the NX clients Log File Path ''.\n"); fprintf(stderr, "%s: PANIC! Could not alloc NX clients Log File Path.\n", __func__);
#endif #endif
return; return;
} }
snprintf(nxagentClientsLogName, NXAGENTCLIENTSLOGNAMELENGTH, "%s/clients", sessionPath);
} }
return; return;
......
...@@ -30,8 +30,7 @@ ...@@ -30,8 +30,7 @@
* Clients log file name. * Clients log file name.
*/ */
#define NXAGENTCLIENTSLOGNAMELENGTH 256 extern char *nxagentClientsLogName;
extern char nxagentClientsLogName[NXAGENTCLIENTSLOGNAMELENGTH];
extern char nxagentVerbose; extern char nxagentVerbose;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment