/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/plymouth.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
 * Plymouth - Read a password from Plymouth and output it
4
4
 * 
5
 
 * Copyright © 2010-2016 Teddy Hogeborn
6
 
 * Copyright © 2010-2016 Björn Påhlsson
 
5
 * Copyright © 2010-2011 Teddy Hogeborn
 
6
 * Copyright © 2010-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
84
84
  
85
85
  va_start(ap, formatstring);
86
86
  ret = vasprintf(&text, formatstring, ap);
87
 
  if(ret == -1){
 
87
  if (ret == -1){
88
88
    fprintf(stderr, "Mandos plugin %s: ",
89
89
            program_invocation_short_name);
90
90
    vfprintf(stderr, formatstring, ap);
156
156
 
157
157
__attribute__((nonnull (2, 3)))
158
158
bool exec_and_wait(pid_t *pid_return, const char *path,
159
 
                   const char * const *argv, bool interruptable,
 
159
                   const char **argv, bool interruptable,
160
160
                   bool daemonize){
161
161
  int status;
162
162
  int ret;
174
174
      }
175
175
    }
176
176
    
177
 
    char **new_argv = malloc(sizeof(const char *));
178
 
    if(new_argv == NULL){
179
 
      error_plus(0, errno, "malloc");
180
 
      _exit(EX_OSERR);
181
 
    }
 
177
    char **new_argv = NULL;
182
178
    char **tmp;
183
179
    int i = 0;
184
180
    for (; argv[i]!=NULL; i++){
185
 
      tmp = realloc(new_argv, sizeof(const char *) * ((size_t)i + 2));
186
 
      if(tmp == NULL){
 
181
      tmp = realloc(new_argv, sizeof(const char *) * ((size_t)i + 1));
 
182
      if (tmp == NULL){
187
183
        error_plus(0, errno, "realloc");
188
184
        free(new_argv);
189
185
        _exit(EX_OSERR);
294
290
  if(proc_id == 0){
295
291
    struct dirent **direntries = NULL;
296
292
    ret = scandir("/proc", &direntries, is_plymouth, alphasort);
297
 
    if(ret == -1){
 
293
    if (ret == -1){
298
294
      error_plus(0, errno, "scandir");
299
295
    }
300
 
    if(ret > 0){
 
296
    if (ret > 0){
301
297
      ret = sscanf(direntries[0]->d_name, "%" SCNuMAX, &proc_id);
302
 
      if(ret < 0){
 
298
      if (ret < 0){
303
299
        error_plus(0, errno, "sscanf");
304
300
      }
305
301
    }
316
312
  return 0;
317
313
}
318
314
 
319
 
const char * const * getargv(pid_t pid){
 
315
const char **getargv(pid_t pid){
320
316
  int cl_fd;
321
317
  char *cmdline_filename;
322
318
  ssize_t sret;
383
379
    return NULL;
384
380
  }
385
381
  argz_extract(cmdline, cmdline_len, argv); /* Create argv */
386
 
  return (const char * const *)argv;
 
382
  return (const char **)argv;
387
383
}
388
384
 
389
385
int main(__attribute__((unused))int argc,
464
460
  }
465
461
  kill_and_wait(plymouth_command_pid);
466
462
  
467
 
  const char * const *plymouthd_argv;
 
463
  const char **plymouthd_argv;
468
464
  pid_t pid = get_pid();
469
465
  if(pid == 0){
470
466
    error_plus(0, 0, "plymouthd pid not found");