/mandos/release

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

« back to all changes in this revision

Viewing changes to plugins.d/password-prompt.c

  • Committer: Björn Påhlsson
  • Date: 2011-06-23 22:27:15 UTC
  • mto: (237.7.33 trunk)
  • mto: This revision was merged to the branch mainline in revision 284.
  • Revision ID: belorn@fukt.bsnet.se-20110623222715-q5wro9ma9iyjl367
* Makefile (CFLAGS): Added "-lrt" to include real time library.
* plugins.d/mandos-client.c: use scandir(3) instead of readdir(3)
                             Prefix all debug output with "Mandos plugin " + program_invocation_short_name
                             Retry servers that failed to provide password.
                             New option --retry SECONDS that sets the interval between rechecking.
                             --retry also controls how often it retries a server when using --connect.
* plugins.d/splashy.c:  Prefix all debug output with "Mandos plugin " + program_invocation_short_name
* plugins.d/usplash.c: --||--
* plugins.d/askpass-fifo.c: --||--
* plugins.d/password-prompt.c: --||--
* plugins.d/plymouth.c: --||--
* mandos: Lower logger level from warning to info on failed client requests because client was disabled or unknown fingerprint.
* plugins.d/plymouth.c (get_pid): bug fix. Was not calling free on direntries. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
                                   getenv(), free() */
42
42
#include <dirent.h>             /* scandir(), alphasort() */
43
43
#include <stdio.h>              /* fprintf(), stderr, getline(),
44
 
                                   stdin, feof(), fputc()
 
44
                                   stdin, feof(), fputc(), vfprintf(), vasprintf()
45
45
                                */
46
46
#include <errno.h>              /* errno, EBADF, ENOTTY, EINVAL,
47
47
                                   EFAULT, EFBIG, EIO, ENOSPC, EINTR
51
51
#include <stdbool.h>            /* bool, false, true */
52
52
#include <inttypes.h>           /* strtoumax() */
53
53
#include <sys/stat.h>           /* struct stat, lstat(), open() */
54
 
#include <string.h>             /* strlen, rindex, memcmp */
 
54
#include <string.h>             /* strlen, rindex, memcmp, strerror() */
55
55
#include <argp.h>               /* struct argp_option, struct
56
56
                                   argp_state, struct argp,
57
57
                                   argp_parse(), error_t,
60
60
#include <sysexits.h>           /* EX_SOFTWARE, EX_OSERR,
61
61
                                   EX_UNAVAILABLE, EX_IOERR, EX_OK */
62
62
#include <fcntl.h>              /* open() */
 
63
#include <stdarg.h>             /* va_list, va_start(), ... */
63
64
 
64
65
volatile sig_atomic_t quit_now = 0;
65
66
int signal_received;
70
71
/* Needed for conflict resolution */
71
72
const char plymouth_name[] = "plymouthd";
72
73
 
 
74
/* Function to use when printing errors */
 
75
void error_plus(int status, int errnum, const char *formatstring, ...){
 
76
  va_list ap;
 
77
  char *text;
 
78
  int ret;
 
79
  
 
80
  va_start(ap, formatstring);
 
81
  ret = vasprintf(&text, formatstring, ap);
 
82
  if (ret == -1){
 
83
    fprintf(stderr, "Mandos plugin %s: ", program_invocation_short_name);
 
84
    vfprintf(stderr, formatstring, ap);
 
85
    fprintf(stderr, ": ");
 
86
    fprintf(stderr, "%s\n", strerror(errnum));
 
87
    error(status, errno, "vasprintf while printing error");
 
88
    return;
 
89
  }
 
90
  fprintf(stderr, "Mandos plugin ");
 
91
  error(status, errnum, "%s", text);
 
92
  free(text);
 
93
}
 
94
 
73
95
static void termination_handler(int signum){
74
96
  if(quit_now){
75
97
    return;
111
133
    cl_fd = open(cmdline_filename, O_RDONLY);
112
134
    free(cmdline_filename);
113
135
    if(cl_fd == -1){
114
 
      error(0, errno, "open");
 
136
      if(errno != ENOENT){
 
137
        error(0, errno, "open");
 
138
      }
115
139
      return 0;
116
140
    }
117
141