/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:
2
2
/*
3
3
 * Password-prompt - Read a password from the terminal and print it
4
4
 * 
5
 
 * Copyright © 2008-2018 Teddy Hogeborn
6
 
 * Copyright © 2008-2018 Björn Påhlsson
 
5
 * Copyright © 2008-2019 Teddy Hogeborn
 
6
 * Copyright © 2008-2019 Björn Påhlsson
7
7
 * 
8
8
 * This file is part of Mandos.
9
9
 * 
274
274
        argp_state_help(state, state->out_stream,
275
275
                        (ARGP_HELP_STD_HELP | ARGP_HELP_EXIT_ERR)
276
276
                        & ~(unsigned int)ARGP_HELP_EXIT_OK);
 
277
        __builtin_unreachable();
277
278
      case -3:                  /* --usage */
278
279
        argp_state_help(state, state->out_stream,
279
280
                        ARGP_HELP_USAGE | ARGP_HELP_EXIT_ERR);
 
281
        __builtin_unreachable();
280
282
      case 'V':                 /* --version */
281
283
        fprintf(state->out_stream, "%s\n", argp_program_version);
282
284
        exit(argp_err_exit_status);
506
508
    }
507
509
    if(sret < 0){
508
510
      int e = errno;
509
 
      if(errno != EINTR and not feof(stdin)){
510
 
        error_plus(0, errno, "getline");
511
 
        switch(e){
512
 
        case EBADF:
513
 
          status = EX_UNAVAILABLE;
514
 
          break;
515
 
        case EIO:
516
 
        case EINVAL:
517
 
        default:
518
 
          status = EX_IOERR;
519
 
          break;
 
511
      if(errno != EINTR){
 
512
        if(not feof(stdin)){
 
513
          error_plus(0, errno, "getline");
 
514
          switch(e){
 
515
          case EBADF:
 
516
            status = EX_UNAVAILABLE;
 
517
            break;
 
518
          case EIO:
 
519
          case EINVAL:
 
520
          default:
 
521
            status = EX_IOERR;
 
522
            break;
 
523
          }
 
524
          break;
 
525
        } else {
 
526
          clearerr(stdin);
520
527
        }
521
 
        break;
522
528
      }
523
529
    }
524
530
    /* if(sret == 0), then the only sensible thing to do is to retry