Xymon Mailing List Archive search

core dump

list Stef Coene
Mon, 13 Jan 2014 11:02:12 +0100
Message-Id: <23974616.YsldIfa72D@scne>

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