Hi,
I have installed the client but I moved it to an other directory. I tried to set XYMONHOME to this new directory, but this causes xymonlaunch to crash with a buffer overvlow. The rest of the commands are running fine. This is the code from ./common/xymonlaunch.c:
/* Find config */
if (!config) {
if (stat("/etc/tasks.cfg", &st) != -1) config = strdup("/etc/tasks.cfg");
else if (stat("/etc/xymon/tasks.cfg", &st) != -1) config =
strdup("/etc/xymon/tasks.cfg");
else if (stat("/etc/xymon-client/clientlaunch.cfg", &st) != -1) config =
strdup("/etc/xymon-client/clientlaunch.cfg");
else if (xgetenv("XYMONHOME")) {
char *pf = NULL;
sprintf(pf, "%s/etc/tasks.cfg", xgetenv("XYMONHOME"));
if (pf && stat(pf, &st) != -1) config = strdup(pf);
}
if (config) dbgprintf("Using config file: %s\n", config);
}
I fixed it like this (line 546). I also added an extra if statement so the script also tries to use clientlaunch.cfg:
/* Find config */ if (!config) { if (stat("/etc/tasks.cfg", &st) != -1) config = strdup("/etc/tasks.cfg"); else if (stat("/etc/xymon/tasks.cfg", &st) != -1) config = strdup("/etc/xymon/tasks.cfg"); else if (stat("/etc/xymon-client/clientlaunch.cfg", &st) != -1) config = strdup("/etc/xymon-client/clientlaunch.cfg"); else if (xgetenv("XYMONHOME")) { char pf[1024] ; sprintf(pf, "%s/etc/tasks.cfg", xgetenv("XYMONHOME")); if (pf && stat(pf, &st) != -1) { config = strdup(pf); } else { sprintf(pf, "%s/etc/clientlaunch.cfg", xgetenv("XYMONHOME")); config = strdup(pf); } }
I also have a problem with this line from file common/xymoncmd.c: sprintf(envfn, "%s/etc/xymonserver.cfg", xgetenv("XYMONHOME"));
I want to run xymoncmd without setting XYMONHOME. So it has to use XYMONHOME from compile time, but that's not working. In the Makefile I set XYMONHOME to a directory but during the compile, /client is added.
Stef