Changeset - 0f9242c3fef6
[Not reviewed]
default
0 3 0
Nathan Brink (binki) - 15 years ago 2010-09-13 20:22:56
ohnobinki@ohnopublishing.net
Properly allocate and manipulate the outputExt variable for simpleslave, fixes a segfault.
3 files changed with 9 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/server/simpleslave.c
Show inline comments
 
@@ -186,6 +186,8 @@ if(updateConf){
 
  int benchmarkTime = 0;
 
  int renderPower = 0;
 

	
 
  outputExt = NULL;
 

	
 
  // @TODO: create _web function to force recalc if !isset($render_power) on server
 
  if(runBenchmark)
 
    {
 
@@ -212,7 +214,7 @@ if(updateConf){
 
    // request work
 
    if(DEBUG)
 
      fprintf(stderr,"Requesting work from %s...\n", hostname);
 
    haveWork = _web_getwork(slavekey, password, &jobnum, &framenum, &xres, &yres, outputExt);
 
    haveWork = _web_getwork(slavekey, password, &jobnum, &framenum, &xres, &yres, &outputExt);
 

	
 
    /* If we got a frame */
 
    if(haveWork)
 
@@ -326,10 +328,11 @@ if(updateConf){
 
        // except for ones that couldn't be uploaded
 
        delete_jobdata(jobnum, datadir);
 
      }
 

	
 
    free(outputExt);
 
  }
 

	
 
  free(my_cfg);
 
  free(outputExt);
 
  free(datadir);
 
  free(urltoTar);
 
  free(pathtoTar);
src/server/slavefuncs.c
Show inline comments
 
@@ -672,7 +672,8 @@ void _web_startframe(int slavekey, char 
 
}
 

	
 
/** @TODO: Needs to get xres, yres, outpuext */
 
int _web_getwork(int slavekey, char *slavepass, int *jobnum, int *framenum, int *xres, int *yres, char *outputext){
 
int _web_getwork(int slavekey, char *slavepass, int *jobnum, int *framenum, int *xres, int *yres, char **outputext)
 
{
 
  char *url;
 
  _distren_asprintf(&url,"http://distren.org/slave/act.php?mode=getwork&slavekey=%d&slavepass=%s", slavekey, slavepass);
 
  struct _web_memorystruct data = _web_getrequest(url);
 
@@ -724,7 +725,7 @@ int _web_getwork(int slavekey, char *sla
 
      tmp = strtok (NULL, ",");
 
      if(tmp == NULL)
 
        return 0; // no work
 
      outputext = tmp;
 
      *outputext = strdup(tmp);
 
      if(DEBUG)
 
        fprintf(stderr,"GETWORK Debug output - Job: %d | Frame: %d | Xres: %d | Yres: %d | Outformat: %s\n", *jobnum, *framenum, *xres, *yres, outputext);
 

	
src/server/slavefuncs.h
Show inline comments
 
@@ -73,7 +73,7 @@ struct _web_memorystruct _web_getrequest
 
void _web_finishframe(int slavekey, char *slavepass, int jobnum, int framenum);
 
void _web_startframe(int slavekey, char *slavepass, int jobnum, int framenum);
 
void _web_resetframe(int slavekey, char *slavepass, int jobnum, int framenum);
 
int _web_getwork(int slavekey, char *slavepass, int *jobnum, int *framenum, int *xres, int *yres, char *outputext);
 
int _web_getwork(int slavekey, char *slavepass, int *jobnum, int *framenum, int *xres, int *yres, char **outputext);
 
void _web_setrenderpower(int slavekey, char *slavepass, int renderpower);
 
int slaveBenchmark(char *datadir, int *benchmarkTime, int *renderPower);
 

	
0 comments (0 inline, 0 general)