/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to debian/mandos-client.postinst

  • Committer: Teddy Hogeborn
  • Date: 2016-03-17 20:40:55 UTC
  • mto: (237.7.594 trunk)
  • mto: This revision was merged to the branch mainline in revision 341.
  • Revision ID: teddy@recompile.se-20160317204055-bhsh5xsidq7w5cxu
Client: Fix plymouth agent; broken since 1.7.2.

Fix an very old memory bug in the plymouth agent (which has been
present since its apperance in version 1.2), but which was only
recently detected at run time due to the new -fsanitize=address
compile- time flag, which has been used since version 1.7.2.  This
detection of a memory access violation causes the program to abort,
making the Plymouth graphical boot system unable to accept interactive
input of passwords when using the Mandos client.

* plugins.d/plymouth.c (exec_and_wait): Fix memory allocation bug when
  allocating new_argv.  Also tolerate a zero-length argv.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/bash -e
 
1
#!/bin/sh
2
2
# This script can be called in the following ways:
3
3
#
4
4
# After the package was installed:
15
15
# If prerm fails during replacement due to conflict:
16
16
#       <postinst> abort-remove in-favour <new-package> <version>
17
17
 
18
 
. /usr/share/debconf/confmodule
 
18
set -e
19
19
 
20
20
# Update the initial RAM file system image
21
21
update_initramfs()
22
22
{
23
 
    if [ -x /usr/sbin/update-initramfs ]; then
24
 
        update-initramfs -u -k all
 
23
    update-initramfs -u -k all
 
24
    
 
25
    if dpkg --compare-versions "$2" lt-nl "1.0.10-1"; then
 
26
        # Make old initrd.img files unreadable too, in case they were
 
27
        # created with mandos-client 1.0.8 or older.
 
28
        find /boot -maxdepth 1 -type f -name "initrd.img-*.bak" \
 
29
            -print0 | xargs --null --no-run-if-empty chmod o-r
25
30
    fi
26
31
}
27
32
 
28
33
# Add user and group
29
34
add_mandos_user(){
30
 
    if ! getent passwd mandos >/dev/null; then
31
 
        adduser --disabled-password  --quiet --system \
32
 
            --home /var/run/mandos --no-create-home \
33
 
            --gecos "Mandos password system" --group mandos
 
35
    # Rename old "mandos" user and group
 
36
    if dpkg --compare-versions "$2" lt "1.0.3-1"; then
 
37
        case "`getent passwd mandos`" in
 
38
            *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
 
39
                usermod --login _mandos mandos
 
40
                groupmod --new-name _mandos mandos
 
41
                return
 
42
                ;;
 
43
        esac
 
44
    fi
 
45
    # Create new user and group
 
46
    if ! getent passwd _mandos >/dev/null; then
 
47
        adduser --system --force-badname --quiet --home /nonexistent \
 
48
            --no-create-home --group --disabled-password \
 
49
            --gecos "Mandos password system" _mandos
34
50
    fi
35
51
}
36
52
 
40
56
        -a -r /etc/keys/mandos/seckey.txt ]; then
41
57
        return 0
42
58
    fi
43
 
    if [ -x /usr/sbin/mandos-keygen ]; then
44
 
        mandos-keygen
45
 
    fi
 
59
    mandos-keygen
 
60
}
 
61
 
 
62
create_dh_params(){
 
63
    if [ -r /etc/keys/mandos/dhparams.pem ]; then
 
64
        return 0
 
65
    fi
 
66
    # Create a Diffe-Hellman parameters file
 
67
    DHFILE="`mktemp -t mandos-client-dh-parameters.XXXXXXXXXX.pem`"
 
68
    # First try certtool from GnuTLS
 
69
    if ! certtool --generate-dh-params --sec-param high \
 
70
         --outfile "$DHFILE"; then
 
71
        # Otherwise try OpenSSL
 
72
        if ! openssl genpkey -genparam -algorithm DH -out "$DHFILE" \
 
73
             -pkeyopt dh_paramgen_prime_len:3072; then
 
74
            # None of the commands succeded; give up
 
75
            rm -- "$DHFILE"
 
76
            return 1
 
77
        fi
 
78
    fi
 
79
    sed --in-place --expression='0,/^-----BEGIN DH PARAMETERS-----$/d' \
 
80
        "$DHFILE"
 
81
    sed --in-place --expression='1i-----BEGIN DH PARAMETERS-----' \
 
82
            "$DHFILE"
 
83
    cp --archive "$DHFILE" /etc/keys/mandos/dhparams.pem
 
84
    rm -- "$DHFILE"
46
85
}
47
86
 
48
87
case "$1" in
49
88
    configure)
50
 
        add_mandos_user
51
 
        create_key
52
 
        update_initramfs
 
89
        add_mandos_user "$@"
 
90
        create_key "$@"
 
91
        create_dh_params "$@" || :
 
92
        update_initramfs "$@"
53
93
        ;;
54
94
    abort-upgrade|abort-deconfigure|abort-remove)
55
95
        ;;
56
96
 
57
97
    *)
58
 
        echo "$0 called with unknown argument \`$1'" 1>&2
 
98
        echo "$0 called with unknown argument '$1'" 1>&2
59
99
        exit 1
60
100
        ;;
61
101
esac