/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 plugins.d/password-prompt.c

  • Committer: Teddy Hogeborn
  • Date: 2019-07-14 22:39:15 UTC
  • Revision ID: teddy@recompile.se-20190714223915-aqjkms3t3taa6tye
Only use sanitizing options when debugging

The C compiler's sanitizing options introduce code in the output
binary which is fragile and not very security conscious.  It has
become clear that sanitizing is only really meant for use while
debugging.

As a side effect, this makes compilation faster, as the Makefile, for
production builds, no longer runs the compiler repeatedly to find all
its currently supported sanitizing options.

* Makefile (DEBUG): Add "$(SANITIZE)".
  (SANITIZE): Comment out.
  (CFLAGS): Remove "$(SANITIZE)".
  (plugins.d/mandos-client): Revert back to use plain $(LINK.c), since
                             we no longer need to remove the leak
                             sanitizer by overriding CFLAGS.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
 
28
28
#include <termios.h>            /* struct termios, tcsetattr(),
29
29
                                   TCSAFLUSH, tcgetattr(), ECHO */
30
 
#include <unistd.h>             /* access(), struct termios,
31
 
                                   tcsetattr(), STDIN_FILENO,
32
 
                                   TCSAFLUSH, tcgetattr(), ECHO,
33
 
                                   readlink() */
 
30
#include <unistd.h>             /* struct termios, tcsetattr(),
 
31
                                   STDIN_FILENO, TCSAFLUSH,
 
32
                                   tcgetattr(), ECHO, readlink() */
34
33
#include <signal.h>             /* sig_atomic_t, raise(), struct
35
34
                                   sigaction, sigemptyset(),
36
35
                                   sigaction(), sigaddset(), SIGINT,
111
110
     from the terminal.  Password-prompt will exit if it detects
112
111
     plymouth since plymouth performs the same functionality.
113
112
   */
114
 
  if(access("/run/plymouth/pid", R_OK) == 0){
115
 
    return true;
116
 
  }
117
 
  
118
113
  __attribute__((nonnull))
119
114
  int is_plymouth(const struct dirent *proc_entry){
120
115
    int ret;
239
234
  struct termios t_new, t_old;
240
235
  char *buffer = NULL;
241
236
  char *prefix = NULL;
242
 
  char *prompt = NULL;
243
237
  int status = EXIT_SUCCESS;
244
238
  struct sigaction old_action,
245
239
    new_action = { .sa_handler = termination_handler,
249
243
      { .name = "prefix", .key = 'p',
250
244
        .arg = "PREFIX", .flags = 0,
251
245
        .doc = "Prefix shown before the prompt", .group = 2 },
252
 
      { .name = "prompt", .key = 129,
253
 
        .arg = "PROMPT", .flags = 0,
254
 
        .doc = "The prompt to show", .group = 2 },
255
246
      { .name = "debug", .key = 128,
256
247
        .doc = "Debug mode", .group = 3 },
257
248
      /*
270
261
    error_t parse_opt (int key, char *arg, struct argp_state *state){
271
262
      errno = 0;
272
263
      switch (key){
273
 
      case 'p':                 /* --prefix */
 
264
      case 'p':
274
265
        prefix = arg;
275
266
        break;
276
 
      case 128:                 /* --debug */
 
267
      case 128:
277
268
        debug = true;
278
269
        break;
279
 
      case 129:                 /* --prompt */
280
 
        prompt = arg;
281
 
        break;
282
270
        /*
283
271
         * These reproduce what we would get without ARGP_NO_HELP
284
272
         */
439
427
    if(prefix){
440
428
      fprintf(stderr, "%s ", prefix);
441
429
    }
442
 
    if(prompt != NULL){
443
 
      fprintf(stderr, "%s: ", prompt);
444
 
    } else {
 
430
    {
445
431
      const char *cryptsource = getenv("CRYPTTAB_SOURCE");
446
432
      const char *crypttarget = getenv("CRYPTTAB_NAME");
447
433
      /* Before cryptsetup 1.1.0~rc2 */