/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 mandos-client.c

mandos-client
        Better error handling for failing to start plugins
        Handle fork errors
password-request
        correct exit routine

Show diffs side-by-side

added added

removed removed

Lines of Context:
457
457
    char *filename = malloc(d_name_len + strlen(plugindir) + 2);
458
458
    if (filename == NULL){
459
459
      perror("malloc");
460
 
      exitstatus = EXIT_FAILURE;
461
 
      goto end;
 
460
      continue;
462
461
    }
463
462
    strcpy(filename, plugindir); /* Spurious warning */
464
463
    strcat(filename, "/");      /* Spurious warning */
467
466
    ret = stat(filename, &st);
468
467
    if (ret == -1){
469
468
      perror("stat");
470
 
      exitstatus = EXIT_FAILURE;
471
 
      goto end;
 
469
      free(filename);
 
470
      continue;
472
471
    }
473
472
    
474
473
    if (not S_ISREG(st.st_mode) or (access(filename, X_OK) != 0)){
523
522
    }
524
523
    // Starting a new process to be watched
525
524
    pid_t pid = fork();
 
525
    if(pid == -1){
 
526
      perror("fork");
 
527
      exitstatus = EXIT_FAILURE;
 
528
      goto end;
 
529
    }
526
530
    if(pid == 0){
527
531
      /* this is the child process */
528
532
      ret = sigaction(SIGCHLD, &old_sigchld_action, NULL);
715
719
 end:
716
720
  
717
721
  if(process_list == NULL or exitstatus != EXIT_SUCCESS){
718
 
    /* Fallback if all plugins failed or an error occured */
 
722
    /* Fallback if all plugins failed, none are found or an error occured */
719
723
    bool bret;
720
724
    fprintf(stderr, "Going to fallback mode using getpass(3)\n");
721
725
    char *passwordbuffer = getpass("Password: ");