/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 debian/mandos-client.postinst

  • Committer: Teddy Hogeborn
  • Date: 2024-09-09 04:24:39 UTC
  • Revision ID: teddy@recompile.se-20240909042439-j85mr20uli2hnyis
Eliminate compiler warnings

Many programs use nested functions, which now result in a linker
warning about executable stack.  Hide this warning.  Also, rewrite a
loop in the plymouth plugin to avoid warning about signed overflow.
This change also makes the plugin pick the alphabetically first
process entry instead of the last, in case many plymouth processes are
found (which should be unlikely).

* Makefile (plugin-runner, dracut-module/password-agent,
  plugins.d/password-prompt, plugins.d/mandos-client,
  plugins.d/plymouth): New target; set LDFLAGS to add "-Xlinker
  --no-warn-execstack".
* plugins.d/plymouth.c (get_pid): When no pid files are found, and we
  are looking through the process list, go though it from the start
  instead of from the end, i.e. in normal alphabetical order and not
  in reverse order.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
update_initramfs()
24
24
{
25
25
    if command -v update-initramfs >/dev/null; then
26
 
        update-initramfs -k all -u
 
26
        update-initramfs -k all -u 1>&2
27
27
    elif command -v dracut >/dev/null; then
28
28
        dracut_version="`dpkg-query --showformat='${Version}' --show dracut`"
29
29
        if dpkg --compare-versions "$dracut_version" lt 043-1 \
51
51
                        /boot/initrd.img-"$kversion"
52
52
            fi
53
53
            if [ "$kversion" != "*" ]; then
54
 
                /etc/kernel/postinst.d/dracut "$kversion"
 
54
                /etc/kernel/postinst.d/dracut "$kversion" 1>&2
55
55
            fi
56
56
        done
57
57
    fi
70
70
    if dpkg --compare-versions "$2" lt "1.0.3-1"; then
71
71
        case "`getent passwd mandos`" in
72
72
            *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
73
 
                usermod --login _mandos mandos
74
 
                groupmod --new-name _mandos mandos
 
73
                usermod --login _mandos mandos 1>&2
 
74
                groupmod --new-name _mandos mandos 1>&2
75
75
                return
76
76
                ;;
77
77
        esac
80
80
    if ! getent passwd _mandos >/dev/null; then
81
81
        adduser --system --force-badname --quiet --home /nonexistent \
82
82
            --no-create-home --group --disabled-password \
83
 
            --gecos "Mandos password system" _mandos
 
83
            --gecos "Mandos password system" _mandos 1>&2
84
84
    fi
85
85
}
86
86
 
90
90
    # mandos-keygen
91
91
    if ! [ -r /etc/keys/mandos/pubkey.txt \
92
92
              -a -r /etc/keys/mandos/seckey.txt ]; then
93
 
        mandos-keygen
94
 
        gpg-connect-agent KILLAGENT /bye || :
 
93
        mandos-keygen 1>&2
 
94
        gpg-connect-agent KILLAGENT /bye 1>&2 || :
95
95
        return 0
96
96
    fi
97
97
 
102
102
        if ! certtool --password='' \
103
103
             --load-privkey=/etc/keys/mandos/tls-privkey.pem \
104
104
             --outfile=/dev/null --pubkey-info --no-text \
105
 
             2>/dev/null; then
 
105
              1>&2 2>/dev/null; then
106
106
            shred --remove -- /etc/keys/mandos/tls-privkey.pem \
107
107
                  2>/dev/null || :
108
108
            rm --force -- /etc/keys/mandos/tls-pubkey.pem
121
121
 
122
122
    if certtool --generate-privkey --password='' \
123
123
                --outfile "$TLS_PRIVKEYTMP" --sec-param ultra \
124
 
                --key-type=ed25519 --pkcs8 --no-text 2>/dev/null; then
 
124
                --key-type=ed25519 --pkcs8 --no-text 1>&2 \
 
125
                2>/dev/null; then
125
126
 
126
127
        local umask=$(umask)
127
128
        umask 077
132
133
        if ! certtool --password='' \
133
134
             --load-privkey=/etc/keys/mandos/tls-privkey.pem \
134
135
             --outfile=/etc/keys/mandos/tls-pubkey.pem --pubkey-info \
135
 
             --no-text 2>/dev/null; then
 
136
             --no-text 1>&2 2>/dev/null; then
136
137
            # Otherwise try OpenSSL
137
138
            if ! openssl pkey -in /etc/keys/mandos/tls-privkey.pem \
138
 
                 -out /etc/keys/mandos/tls-pubkey.pem -pubout; then
 
139
                 -out /etc/keys/mandos/tls-pubkey.pem -pubout \
 
140
                 1>&2; then
139
141
                rm --force /etc/keys/mandos/tls-pubkey.pem
140
142
                # None of the commands succeded; give up
141
143
                umask $umask
167
169
    DHFILE="`mktemp -t mandos-client-dh-parameters.XXXXXXXXXX.pem`"
168
170
    # First try certtool from GnuTLS
169
171
    if ! certtool --generate-dh-params --sec-param high \
170
 
         --outfile "$DHFILE"; then
 
172
         --outfile "$DHFILE" 1>&2; then
171
173
        # Otherwise try OpenSSL
172
174
        if ! openssl genpkey -genparam -algorithm DH -out "$DHFILE" \
173
 
             -pkeyopt dh_paramgen_prime_len:3072; then
 
175
             -pkeyopt dh_paramgen_prime_len:3072 1>&2; then
174
176
            # None of the commands succeded; give up
175
 
            rm -- "$DHFILE"
 
177
            rm --force -- "$DHFILE"
176
178
            return 1
177
179
        fi
178
180
    fi
181
183
    sed --in-place --expression='1i-----BEGIN DH PARAMETERS-----' \
182
184
            "$DHFILE"
183
185
    cp --archive "$DHFILE" /etc/keys/mandos/dhparams.pem
184
 
    rm -- "$DHFILE"
 
186
    rm --force -- "$DHFILE"
185
187
}
186
188
 
187
189
case "$1" in