/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 dracut-module/password-agent.c

  • Committer: Teddy Hogeborn
  • Date: 2021-02-01 19:30:45 UTC
  • Revision ID: teddy@recompile.se-20210201193045-lpg6aprpc4srem6k
Fix issue with french translation

Initial white space was missing in both msgid and msgstr of the french
translation, leading to checking tools reporing an incomplete
translation.  The string is a raw command line command, and therefore
did not need translation, so this was never a user-visible issue.

* debian/po/fr.po: Add missing whitespace to the id and translation
  for msgid " mandos-keygen -F/dev/null|grep ^key_id".

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* -*- coding: utf-8; lexical-binding: t -*- */
 
1
/* -*- mode: c; coding: utf-8; after-save-hook: (lambda () (let* ((find-build-directory (lambda (try-directory &optional base-directory) (let ((base-directory (or base-directory try-directory))) (cond ((equal try-directory "/") base-directory) ((file-readable-p (concat (file-name-as-directory try-directory) "Makefile")) try-directory) ((funcall find-build-directory (directory-file-name (file-name-directory try-directory)) base-directory)))))) (build-directory (funcall find-build-directory (buffer-file-name))) (local-build-directory (if (fboundp 'file-local-name) (file-local-name build-directory) (or (file-remote-p build-directory 'localname) build-directory))) (command (file-relative-name (file-name-sans-extension (buffer-file-name)) build-directory))) (pcase (progn (if (get-buffer "*Test*") (kill-buffer "*Test*")) (process-file-shell-command (let ((qbdir (shell-quote-argument local-build-directory)) (qcmd (shell-quote-argument command))) (format "cd %s && CFLAGS=-Werror make --silent %s && %s --test --verbose" qbdir qcmd qcmd)) nil "*Test*")) (0 (let ((w (get-buffer-window "*Test*"))) (if w (delete-window w)))) (_ (with-current-buffer "*Test*" (compilation-mode) (cd-absolute build-directory)) (display-buffer "*Test*" '(display-buffer-in-side-window)))))); -*- */
2
2
/*
3
3
 * Mandos password agent - Simple password agent to run Mandos client
4
4
 *
5
 
 * Copyright © 2019-2022 Teddy Hogeborn
6
 
 * Copyright © 2019-2022 Björn Påhlsson
 
5
 * Copyright © 2019-2020 Teddy Hogeborn
 
6
 * Copyright © 2019-2020 Björn Påhlsson
7
7
 * 
8
8
 * This file is part of Mandos.
9
9
 * 
23
23
 * Contact the authors at <mandos@recompile.se>.
24
24
 */
25
25
 
26
 
#define _GNU_SOURCE             /* pipe2(), O_CLOEXEC, setresgid(),
27
 
                                   setresuid(), asprintf(), getline(),
28
 
                                   basename() */
29
 
#include <inttypes.h>           /* uintmax_t, strtoumax(), PRIuMAX,
30
 
                                   PRIdMAX, intmax_t, uint32_t,
31
 
                                   SCNx32, SCNuMAX, SCNxMAX */
32
 
#include <stddef.h>             /* size_t, NULL */
 
26
#define _GNU_SOURCE
 
27
#include <inttypes.h>           /* uintmax_t, PRIuMAX, PRIdMAX,
 
28
                                   intmax_t, uint32_t, SCNx32,
 
29
                                   SCNuMAX, SCNxMAX */
 
30
#include <stddef.h>             /* size_t */
33
31
#include <sys/types.h>          /* pid_t, uid_t, gid_t, getuid(),
34
32
                                   getpid() */
35
33
#include <stdbool.h>            /* bool, true, false */
42
40
                                   NSIG, sigismember(), SA_ONSTACK,
43
41
                                   SIG_DFL, SIG_IGN, SIGINT, SIGQUIT,
44
42
                                   SIGHUP, SIGSTOP, SIG_UNBLOCK */
45
 
#include <unistd.h>             /* uid_t, gid_t, close(), pipe2(),
46
 
                                   fork(), _exit(), dup2(),
47
 
                                   STDOUT_FILENO, setresgid(),
48
 
                                   setresuid(), execv(), ssize_t,
49
 
                                   read(), dup3(), getuid(), dup(),
50
 
                                   STDERR_FILENO, pause(), write(),
51
 
                                   rmdir(), unlink(), getpid() */
52
43
#include <stdlib.h>             /* EXIT_SUCCESS, EXIT_FAILURE,
53
 
                                   malloc(), free(), realloc(),
54
 
                                   setenv(), calloc(), mkdtemp(),
55
 
                                   mkostemp() */
 
44
                                   malloc(), free(), strtoumax(),
 
45
                                   realloc(), setenv(), calloc(),
 
46
                                   mkdtemp(), mkostemp() */
56
47
#include <iso646.h>             /* not, or, and, xor */
57
48
#include <error.h>              /* error() */
58
49
#include <sysexits.h>           /* EX_USAGE, EX_OSERR, EX_OSFILE */
66
57
#include <string.h>             /* strdup(), memcpy(),
67
58
                                   explicit_bzero(), memset(),
68
59
                                   strcmp(), strlen(), strncpy(),
69
 
                                   memcmp(), basename(), strerror() */
 
60
                                   memcmp(), basename() */
70
61
#include <argz.h>               /* argz_create(), argz_count(),
71
62
                                   argz_extract(), argz_next(),
72
63
                                   argz_add() */
82
73
                                   ARGP_ERR_UNKNOWN, ARGP_KEY_ARGS,
83
74
                                   struct argp, argp_parse(),
84
75
                                   ARGP_NO_EXIT */
85
 
#include <stdint.h>             /* SIZE_MAX, uint32_t */
 
76
#include <stdint.h>             /* SIZE_MAX */
 
77
#include <unistd.h>             /* uid_t, gid_t, close(), pipe2(),
 
78
                                   fork(), _exit(), dup2(),
 
79
                                   STDOUT_FILENO, setresgid(),
 
80
                                   setresuid(), execv(), ssize_t,
 
81
                                   read(), dup3(), getuid(), dup(),
 
82
                                   STDERR_FILENO, pause(), write(),
 
83
                                   rmdir(), unlink(), getpid() */
86
84
#include <sys/mman.h>           /* munlock(), mlock() */
87
85
#include <fcntl.h>              /* O_CLOEXEC, O_NONBLOCK, fcntl(),
88
86
                                   F_GETFD, F_GETFL, FD_CLOEXEC,
112
110
                        g_assert_null(), g_assert_false(),
113
111
                        g_assert_cmpint(), g_assert_cmpuint(),
114
112
                        g_test_skip(), g_assert_cmpstr(),
115
 
                        g_test_message(), g_test_init(), g_test_add(),
116
 
                        g_test_run(), GOptionContext,
117
 
                        g_option_context_new(),
 
113
                        g_test_init(), g_test_add(), g_test_run(),
 
114
                        GOptionContext, g_option_context_new(),
118
115
                        g_option_context_set_help_enabled(), FALSE,
119
116
                        g_option_context_set_ignore_unknown_options(),
120
117
                        gboolean, GOptionEntry, G_OPTION_ARG_NONE,
1098
1095
  } ievent_buffer;
1099
1096
  struct inotify_event *const ievent = &ievent_buffer.event;
1100
1097
 
1101
 
#if defined(__GNUC__) and __GNUC__ >= 7
1102
 
#pragma GCC diagnostic push
1103
 
  /* ievent is pointing into a struct which is of sufficient size */
1104
 
#pragma GCC diagnostic ignored "-Wstringop-overflow"
1105
 
#endif
1106
1098
  const ssize_t read_length = read(fd, ievent, ievent_size);
1107
 
#if defined(__GNUC__) and __GNUC__ >= 7
1108
 
#pragma GCC diagnostic pop
1109
 
#endif
1110
1099
  if(read_length == 0){ /* EOF */
1111
1100
    error(0, 0, "Got EOF from inotify fd for directory %s", filename);
1112
1101
    *quit_now = true;
2661
2650
  bool password_is_read = false;
2662
2651
  const char helper_directory[] = "/nonexistent";
2663
2652
  const char *const argv[] = { "/bin/sh", "-c",
2664
 
    "printf %s \"${MANDOSPLUGINHELPERDIR}\"", NULL };
 
2653
    "echo -n ${MANDOSPLUGINHELPERDIR}", NULL };
2665
2654
 
2666
2655
  const bool success = start_mandos_client(queue, epoll_fd,
2667
2656
                                           &mandos_client_exited,
4190
4179
  memcpy(ievent->name, dummy_file_name, sizeof(dummy_file_name));
4191
4180
  const size_t ievent_size = (sizeof(struct inotify_event)
4192
4181
                              + sizeof(dummy_file_name));
4193
 
#if defined(__GNUC__) and __GNUC__ >= 11
4194
 
#pragma GCC diagnostic push
4195
 
  /* ievent is pointing into a struct which is of sufficient size */
4196
 
#pragma GCC diagnostic ignored "-Wstringop-overread"
4197
 
#endif
4198
4182
  g_assert_cmpint(write(pipefds[1], (char *)ievent, ievent_size),
4199
4183
                  ==, ievent_size);
4200
 
#if defined(__GNUC__) and __GNUC__ >= 11
4201
 
#pragma GCC diagnostic pop
4202
 
#endif
4203
4184
  g_assert_cmpint(close(pipefds[1]), ==, 0);
4204
4185
 
4205
4186
  bool quit_now = false;
4293
4274
  memcpy(ievent->name, dummy_file_name, sizeof(dummy_file_name));
4294
4275
  const size_t ievent_size = (sizeof(struct inotify_event)
4295
4276
                              + sizeof(dummy_file_name));
4296
 
#if defined(__GNUC__) and __GNUC__ >= 11
4297
 
#pragma GCC diagnostic push
4298
 
  /* ievent is pointing into a struct which is of sufficient size */
4299
 
#pragma GCC diagnostic ignored "-Wstringop-overread"
4300
 
#endif
4301
4277
  g_assert_cmpint(write(pipefds[1], (char *)ievent, ievent_size),
4302
4278
                  ==, ievent_size);
4303
 
#if defined(__GNUC__) and __GNUC__ >= 11
4304
 
#pragma GCC diagnostic pop
4305
 
#endif
4306
4279
  g_assert_cmpint(close(pipefds[1]), ==, 0);
4307
4280
 
4308
4281
  bool quit_now = false;
4398
4371
  memcpy(ievent->name, dummy_file_name, sizeof(dummy_file_name));
4399
4372
  const size_t ievent_size = (sizeof(struct inotify_event)
4400
4373
                              + sizeof(dummy_file_name));
4401
 
#if defined(__GNUC__) and __GNUC__ >= 11
4402
 
#pragma GCC diagnostic push
4403
 
  /* ievent is pointing into a struct which is of sufficient size */
4404
 
#pragma GCC diagnostic ignored "-Wstringop-overread"
4405
 
#endif
4406
4374
  g_assert_cmpint(write(pipefds[1], (char *)ievent, ievent_size),
4407
4375
                  ==, ievent_size);
4408
 
#if defined(__GNUC__) and __GNUC__ >= 11
4409
 
#pragma GCC diagnostic pop
4410
 
#endif
4411
4376
  g_assert_cmpint(close(pipefds[1]), ==, 0);
4412
4377
 
4413
4378
  bool quit_now = false;
4491
4456
  memcpy(ievent->name, dummy_file_name, sizeof(dummy_file_name));
4492
4457
  const size_t ievent_size = (sizeof(struct inotify_event)
4493
4458
                              + sizeof(dummy_file_name));
4494
 
#if defined(__GNUC__) and __GNUC__ >= 11
4495
 
#pragma GCC diagnostic push
4496
 
  /* ievent is pointing into a struct which is of sufficient size */
4497
 
#pragma GCC diagnostic ignored "-Wstringop-overread"
4498
 
#endif
4499
4459
  g_assert_cmpint(write(pipefds[1], (char *)ievent, ievent_size),
4500
4460
                  ==, ievent_size);
4501
 
#if defined(__GNUC__) and __GNUC__ >= 11
4502
 
#pragma GCC diagnostic pop
4503
 
#endif
4504
4461
  g_assert_cmpint(close(pipefds[1]), ==, 0);
4505
4462
 
4506
4463
  bool quit_now = false;
4583
4540
  memcpy(ievent->name, dummy_file_name, sizeof(dummy_file_name));
4584
4541
  const size_t ievent_size = (sizeof(struct inotify_event)
4585
4542
                              + sizeof(dummy_file_name));
4586
 
#if defined(__GNUC__) and __GNUC__ >= 11
4587
 
#pragma GCC diagnostic push
4588
 
  /* ievent is pointing into a struct which is of sufficient size */
4589
 
#pragma GCC diagnostic ignored "-Wstringop-overread"
4590
 
#endif
4591
4543
  g_assert_cmpint(write(pipefds[1], (char *)ievent, ievent_size),
4592
4544
                  ==, ievent_size);
4593
 
#if defined(__GNUC__) and __GNUC__ >= 11
4594
 
#pragma GCC diagnostic pop
4595
 
#endif
4596
4545
  g_assert_cmpint(close(pipefds[1]), ==, 0);
4597
4546
 
4598
4547
  bool quit_now = false;
4667
4616
  memcpy(ievent->name, dummy_file_name, sizeof(dummy_file_name));
4668
4617
  const size_t ievent_size = (sizeof(struct inotify_event)
4669
4618
                              + sizeof(dummy_file_name));
4670
 
#if defined(__GNUC__) and __GNUC__ >= 11
4671
 
#pragma GCC diagnostic push
4672
 
  /* ievent is pointing into a struct which is of sufficient size */
4673
 
#pragma GCC diagnostic ignored "-Wstringop-overread"
4674
 
#endif
4675
4619
  g_assert_cmpint(write(pipefds[1], (char *)ievent, ievent_size),
4676
4620
                  ==, ievent_size);
4677
 
#if defined(__GNUC__) and __GNUC__ >= 11
4678
 
#pragma GCC diagnostic pop
4679
 
#endif
4680
4621
  g_assert_cmpint(close(pipefds[1]), ==, 0);
4681
4622
 
4682
4623
  bool quit_now = false;
4754
4695
  memcpy(ievent->name, dummy_file_name, sizeof(dummy_file_name));
4755
4696
  const size_t ievent_size = (sizeof(struct inotify_event)
4756
4697
                              + sizeof(dummy_file_name));
4757
 
#if defined(__GNUC__) and __GNUC__ >= 11
4758
 
#pragma GCC diagnostic push
4759
 
  /* ievent is pointing into a struct which is of sufficient size */
4760
 
#pragma GCC diagnostic ignored "-Wstringop-overread"
4761
 
#endif
4762
4698
  g_assert_cmpint(write(pipefds[1], (char *)ievent, ievent_size),
4763
4699
                  ==, ievent_size);
4764
 
#if defined(__GNUC__) and __GNUC__ >= 11
4765
 
#pragma GCC diagnostic pop
4766
 
#endif
4767
4700
  g_assert_cmpint(close(pipefds[1]), ==, 0);
4768
4701
 
4769
4702
  bool quit_now = false;
6069
6002
    if(ssret < 0){
6070
6003
      if(saved_errno != EMSGSIZE) {
6071
6004
        g_test_skip("Skipping EMSGSIZE test");
6072
 
        g_test_message("Error on send(%" PRIuMAX " bytes): %s",
6073
 
                       (uintmax_t)message_size,
6074
 
                       strerror(saved_errno));
 
6005
        g_test_message("Error on send(): %s", strerror(saved_errno));
6075
6006
        return;
6076
6007
      }
6077
6008
      break;
8259
8190
  g_option_context_free(context);
8260
8191
  return should_run_tests != FALSE;
8261
8192
}
8262
 
 
8263
 
/*
8264
 
Local Variables:
8265
 
run-tests:
8266
 
(lambda ()
8267
 
  (if (not (funcall run-tests-in-test-buffer default-directory))
8268
 
      (funcall show-test-buffer-in-test-window)
8269
 
    (funcall remove-test-window)))
8270
 
run-tests-in-test-buffer:
8271
 
(lambda (dir)
8272
 
  (with-current-buffer (get-buffer-create "*Test*")
8273
 
    (setq buffer-read-only nil
8274
 
          default-directory dir)
8275
 
    (erase-buffer)
8276
 
    (compilation-mode))
8277
 
  (let ((process-result
8278
 
         (let ((inhibit-read-only t))
8279
 
           (process-file-shell-command
8280
 
            (funcall get-command-line) nil "*Test*"))))
8281
 
    (and (numberp process-result)
8282
 
         (= process-result 0))))
8283
 
get-command-line:
8284
 
(lambda ()
8285
 
  (let*
8286
 
      ((build-directory
8287
 
        (funcall find-build-directory (buffer-file-name)))
8288
 
       (local-build-directory
8289
 
        (if (fboundp 'file-local-name)
8290
 
            (file-local-name build-directory)
8291
 
          (or (file-remote-p build-directory 'localname)
8292
 
              build-directory)))
8293
 
       (command
8294
 
        (file-relative-name (file-name-sans-extension
8295
 
                             (buffer-file-name)) build-directory))
8296
 
       (qbdir (shell-quote-argument local-build-directory))
8297
 
       (qcmd (shell-quote-argument command)))
8298
 
    (format (concat "cd %s && CFLAGS=-Werror make --silent %s"
8299
 
             " && %s --test --verbose") qbdir qcmd qcmd)))
8300
 
find-build-directory:
8301
 
(lambda (try-directory &optional base-directory)
8302
 
  (let ((base-directory (or base-directory try-directory)))
8303
 
    (cond ((equal try-directory "/") base-directory)
8304
 
          ((file-readable-p
8305
 
            (concat (file-name-as-directory try-directory)
8306
 
                    "Makefile")) try-directory)
8307
 
          ((funcall find-build-directory
8308
 
                    (directory-file-name (file-name-directory
8309
 
                                          try-directory))
8310
 
                    base-directory)))))
8311
 
show-test-buffer-in-test-window:
8312
 
(lambda ()
8313
 
  (when (not (get-buffer-window-list "*Test*"))
8314
 
    (setq next-error-last-buffer (get-buffer "*Test*"))
8315
 
    (let* ((side (if (>= (window-width) 146) 'right 'bottom))
8316
 
           (display-buffer-overriding-action
8317
 
            `((display-buffer-in-side-window) (side . ,side)
8318
 
              (window-height . fit-window-to-buffer)
8319
 
              (window-width . fit-window-to-buffer))))
8320
 
      (display-buffer "*Test*"))))
8321
 
remove-test-window:
8322
 
(lambda ()
8323
 
  (let ((test-window (get-buffer-window "*Test*")))
8324
 
    (if test-window (delete-window test-window))))
8325
 
eval: (add-hook 'after-save-hook run-tests 90 t)
8326
 
End:
8327
 
*/