/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to plugin-runner.c

  • Committer: Teddy Hogeborn
  • Date: 2008-08-20 03:22:45 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080820032245-ue341vdvzqdsg68l
* mandos (string_to_delta): Accept a whitespace-separated sequence of
                            intervals and return the sum.  This allows
                            "5m 30s" to be valid.
  (main): Provide an empty default value for the "host" option for
          "clients.conf", making it no longer a required option.

* mandos-clients.conf.xml: Removed <?xml-stylesheet>.
  (DESCRIPTION): Improved text.
  (DEFAULTS): Renamed to "OPTIONS".  Improved text for "timeout" and
              "interval".
  (CLIENTS): Removed; content moved to "OPTIONS".
  (EXPANSION): New section; document %(foo)s and %%(foo)s expansion.
  (FILES): Moved to before "EXAMPLES".
  (BUGS): New section.
  (EXAMPLES): Renamed to "EXAMPLE", as per man-pages(7).  Renamed
              example section "example_client" to "foo".  Changed
              example "host" setting to a more reasonable example host
              name.  Added additional example client "bar".

* mandos-conf.xml: Removed OVERVIEW entity.

Show diffs side-by-side

added added

removed removed

Lines of Context:
105
105
  if (new_plugin == NULL){
106
106
    return NULL;
107
107
  }
108
 
  char *copy_name = NULL;
109
 
  if(name != NULL){
110
 
    copy_name = strdup(name);
111
 
    if(copy_name == NULL){
112
 
      return NULL;
113
 
    }
 
108
  char *copy_name = strdup(name);
 
109
  if(copy_name == NULL){
 
110
    return NULL;
114
111
  }
115
112
  
116
113
  *new_plugin = (plugin) { .name = copy_name,
121
118
  
122
119
  new_plugin->argv = malloc(sizeof(char *) * 2);
123
120
  if (new_plugin->argv == NULL){
124
 
    free(copy_name);
125
121
    free(new_plugin);
126
122
    return NULL;
127
123
  }
130
126
 
131
127
  new_plugin->environ = malloc(sizeof(char *));
132
128
  if(new_plugin->environ == NULL){
133
 
    free(copy_name);
134
129
    free(new_plugin->argv);
135
130
    free(new_plugin);
136
131
    return NULL;
252
247
    return NULL;
253
248
  }
254
249
  argv[*argc-1] = arg;
255
 
  argv[*argc] = NULL;
 
250
  argv[*argc] = NULL;   
256
251
  return argv;
257
252
}
258
253
 
259
254
static void free_plugin_list(plugin *plugin_list){
260
 
  for(plugin *next; plugin_list != NULL; plugin_list = next){
 
255
  for(plugin *next = plugin_list; plugin_list != NULL; plugin_list = next){
261
256
    next = plugin_list->next;
 
257
    free(plugin_list->name);
262
258
    for(char **arg = plugin_list->argv; *arg != NULL; arg++){
263
259
      free(*arg);
264
 
    }
 
260
    }    
265
261
    free(plugin_list->argv);
266
262
    for(char **env = plugin_list->environ; *env != NULL; env++){
267
263
      free(*env);
268
264
    }
269
265
    free(plugin_list->environ);
270
266
    free(plugin_list);
271
 
  }
 
267
  }  
272
268
}
273
269
 
274
270
int main(int argc, char *argv[]){
302
298
  ret = sigaction(SIGCHLD, &sigchld_action, &old_sigchld_action);
303
299
  if(ret == -1){
304
300
    perror("sigaction");
305
 
    exitstatus = EXIT_FAILURE;
 
301
    exitstatus = EXIT_FAILURE;    
306
302
    goto fallback;
307
303
  }
308
304
  
684
680
      }
685
681
    }
686
682
    
687
 
    int pipefd[2];
 
683
    int pipefd[2]; 
688
684
    ret = pipe(pipefd);
689
685
    if (ret == -1){
690
686
      perror("pipe");
791
787
  }
792
788
  
793
789
  free_plugin_list(plugin_list);
794
 
  plugin_list = NULL;
795
790
  
796
791
  closedir(dir);
797
792
  dir = NULL;