/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: Björn Påhlsson
  • Date: 2010-11-05 18:30:07 UTC
  • mto: This revision was merged to the branch mainline in revision 463.
  • Revision ID: belorn@fukt.bsnet.se-20101105183007-20us6fal38a60w4u
password-prompt: added conflic handling with plymouth daemon.
plymouth: bug fix when --ping dont return sucessful.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*  -*- coding: utf-8 -*- */
 
2
/*
 
3
 * Usplash - Read a password from usplash and output it
 
4
 * 
 
5
 * Copyright © 2010 Teddy Hogeborn
 
6
 * Copyright © 2010 Björn Påhlsson
 
7
 * 
 
8
 * This program is free software: you can redistribute it and/or
 
9
 * modify it under the terms of the GNU General Public License as
 
10
 * published by the Free Software Foundation, either version 3 of the
 
11
 * License, or (at your option) any later version.
 
12
 * 
 
13
 * This program is distributed in the hope that it will be useful, but
 
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
16
 * General Public License for more details.
 
17
 * 
 
18
 * You should have received a copy of the GNU General Public License
 
19
 * along with this program.  If not, see
 
20
 * <http://www.gnu.org/licenses/>.
 
21
 * 
 
22
 * Contact the authors at <mandos@fukt.bsnet.se>.
 
23
 */
 
24
 
1
25
#define _GNU_SOURCE             /* asprintf(), TEMP_FAILURE_RETRY() */
2
26
#include <signal.h>             /* sig_atomic_t, struct sigaction,
3
27
                                   sigemptyset(), sigaddset(), SIGINT,
172
196
      return 0;
173
197
    }
174
198
  }
175
 
  char exe_target[sizeof(plymouth_path)];
 
199
  char exe_target[sizeof(plymouthd_path)];
176
200
  char *exe_link;
177
201
  ret = asprintf(&exe_link, "/proc/%s/exe", proc_entry->d_name);
178
202
  if(ret == -1){
199
223
  
200
224
  ssize_t sret = readlink(exe_link, exe_target, sizeof(exe_target));
201
225
  free(exe_link);
202
 
  if((sret != (ssize_t)sizeof(plymouth_path)-1) or
203
 
      (memcmp(plymouth_path, exe_target,
204
 
              sizeof(plymouth_path)-1) != 0)){
 
226
  if((sret != (ssize_t)sizeof(plymouthd_path)-1) or
 
227
      (memcmp(plymouthd_path, exe_target,
 
228
              sizeof(plymouthd_path)-1) != 0)){
205
229
    return 0;
206
230
  }
207
231
  return 1;
221
245
  if(maxvalue == 0){
222
246
    struct dirent **direntries;
223
247
    ret = scandir("/proc", &direntries, is_plymouth, alphasort);
224
 
    sscanf(direntries[0]->d_name, "%" SCNuMAX, &maxvalue);
 
248
    if (ret == -1){
 
249
      error(0, errno, "scandir");
 
250
    }
 
251
    if (ret > 0){
 
252
      ret = sscanf(direntries[0]->d_name, "%" SCNuMAX, &maxvalue);
 
253
      if (ret < 0){
 
254
        error(0, errno, "sscanf");
 
255
      }
 
256
    }
225
257
  }
226
258
  pid_t pid;
227
259
  pid = (pid_t)maxvalue;