/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/askpass-fifo.c

  • Committer: Teddy Hogeborn
  • Date: 2011-12-31 20:07:11 UTC
  • mfrom: (535.1.9 wireless-network-hook)
  • Revision ID: teddy@recompile.se-20111231200711-6dli3r8drftem57r
Merge new wireless network hook.  Fix bridge network hook to use
hardware addresses instead of interface names.  Implement and document
new "CONNECT" environment variable for network hooks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
/*
3
3
 * Askpass-FIFO - Read a password from a FIFO and output it
4
4
 * 
5
 
 * Copyright © 2008-2014 Teddy Hogeborn
6
 
 * Copyright © 2008-2014 Björn Påhlsson
 
5
 * Copyright © 2008-2011 Teddy Hogeborn
 
6
 * Copyright © 2008-2011 Björn Påhlsson
7
7
 * 
8
8
 * This program is free software: you can redistribute it and/or
9
9
 * modify it under the terms of the GNU General Public License as
23
23
 */
24
24
 
25
25
#define _GNU_SOURCE             /* TEMP_FAILURE_RETRY() */
26
 
#include <sys/types.h>          /* uid_t, gid_t, ssize_t */
 
26
#include <sys/types.h>          /* ssize_t */
27
27
#include <sys/stat.h>           /* mkfifo(), S_IRUSR, S_IWUSR */
28
28
#include <iso646.h>             /* and */
29
29
#include <errno.h>              /* errno, EACCES, ENOTDIR, ELOOP,
44
44
#include <string.h>             /* strerror() */
45
45
#include <stdarg.h>             /* va_list, va_start(), ... */
46
46
 
47
 
uid_t uid = 65534;
48
 
gid_t gid = 65534;
49
47
 
50
48
/* Function to use when printing errors */
51
49
__attribute__((format (gnu_printf, 3, 4)))
57
55
  
58
56
  va_start(ap, formatstring);
59
57
  ret = vasprintf(&text, formatstring, ap);
60
 
  if(ret == -1){
 
58
  if (ret == -1){
61
59
    fprintf(stderr, "Mandos plugin %s: ",
62
60
            program_invocation_short_name);
63
61
    vfprintf(stderr, formatstring, ap);
76
74
  int ret = 0;
77
75
  ssize_t sret;
78
76
  
79
 
  uid = getuid();
80
 
  gid = getgid();
81
 
  
82
77
  /* Create FIFO */
83
78
  const char passfifo[] = "/lib/cryptsetup/passfifo";
84
79
  ret = mkfifo(passfifo, S_IRUSR | S_IWUSR);
124
119
    }
125
120
  }
126
121
  
127
 
  /* Lower group privileges  */
128
 
  if(setgid(gid) == -1){
129
 
    error_plus(0, errno, "setgid");
130
 
  }
131
 
  
132
 
  /* Lower user privileges */
133
 
  if(setuid(uid) == -1){
134
 
    error_plus(0, errno, "setuid");
135
 
  }
136
 
  
137
122
  /* Read from FIFO */
138
123
  char *buf = NULL;
139
124
  size_t buf_len = 0;