/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 initramfs-tools-hook

  • Committer: Teddy Hogeborn
  • Date: 2016-06-03 17:27:03 UTC
  • Revision ID: teddy@recompile.se-20160603172703-mc6tjor6rhq4xy74
mandos: Bug fix: Do multiprocessing cleanup correctly on exit

* mandos (main): Save module "multiprocessing" and open file "wnull"
                 as scope variables accessible by function cleanup(),
                 since the module and global variable may not be
                 accessible when the cleanup() function is run as
                 scheduled by atexit().

Show diffs side-by-side

added added

removed removed

Lines of Context:
80
80
        --mode=u=rwx "${DESTDIR}${PLUGINDIR}" \
81
81
        "${DESTDIR}${PLUGINHELPERDIR}"
82
82
 
83
 
copy_exec "$libdir"/mandos/mandos-to-cryptroot-unlock "${MANDOSDIR}"
84
 
 
85
83
# Copy the Mandos plugin runner
86
84
copy_exec "$libdir"/mandos/plugin-runner "${MANDOSDIR}"
87
85
 
142
140
# Get DEVICE from initramfs.conf and other files
143
141
. /etc/initramfs-tools/initramfs.conf
144
142
for conf in /etc/initramfs-tools/conf.d/*; do
145
 
    if [ -n "`basename \"$conf\" \
146
 
        | grep '^[[:alnum:]][[:alnum:]\._-]*$' \
147
 
        | grep -v '\.dpkg-.*$'`" ]; then
148
 
        [ -f "${conf}" ] && . "${conf}"
 
143
    if [ -n `basename \"$conf\" | grep '^[[:alnum:]][[:alnum:]\._-]*$' \
 
144
        | grep -v '\.dpkg-.*$'` ]; then
 
145
        [ -f ${conf} ] && . ${conf}
149
146
    fi
150
147
done
151
148
export DEVICE
160
157
    if [ -x "$hook" ]; then
161
158
        # Copy any files needed by the network hook
162
159
        MANDOSNETHOOKDIR=/etc/mandos/network-hooks.d MODE=files \
163
 
            VERBOSITY=0 "$hook" files | while read -r file target; do
 
160
            VERBOSITY=0 "$hook" files | while read file target; do
164
161
            if [ ! -e "${file}" ]; then
165
162
                echo "WARNING: file ${file} not found, requested by Mandos network hook '${hook##*/}'" >&2
166
163
            fi
172
169
        done
173
170
        # Copy and load any modules needed by the network hook
174
171
        MANDOSNETHOOKDIR=/etc/mandos/network-hooks.d MODE=modules \
175
 
            VERBOSITY=0 "$hook" modules | while read -r module; do
176
 
            force_load "$module"
 
172
            VERBOSITY=0 "$hook" modules | while read module; do
 
173
            if [ -z "${target}" ]; then
 
174
                force_load "$module"
 
175
            fi
177
176
        done
178
177
    fi
179
178
done
180
179
 
181
180
# GPGME needs GnuPG
182
181
gpg=/usr/bin/gpg
183
 
libgpgme11_version="`dpkg-query --showformat='${Version}\n' --show libgpgme11t64 libgpgme11 2>/dev/null | head --lines=1`"
 
182
libgpgme11_version="`dpkg-query --showformat='${Version}' --show libgpgme11`"
184
183
if dpkg --compare-versions "$libgpgme11_version" ge 1.5.0-0.1; then
185
184
    if [ -e /usr/bin/gpgconf ]; then
186
185
        if [ ! -e "${DESTDIR}/usr/bin/gpgconf" ]; then
187
186
            copy_exec /usr/bin/gpgconf
188
187
        fi
189
188
        gpg="`/usr/bin/gpgconf|sed --quiet --expression='s/^gpg:[^:]*://p'`"
190
 
        gpgagent="`/usr/bin/gpgconf|sed --quiet --expression='s/^gpg-agent:[^:]*://p'`"
191
 
        # Newer versions of GnuPG 2 requires the gpg-agent binary
192
 
        if [ -e "$gpgagent" ] && [ ! -e "${DESTDIR}$gpgagent" ]; then
193
 
            copy_exec "$gpgagent"
194
 
        fi
195
189
    fi
196
190
elif dpkg --compare-versions "$libgpgme11_version" ge 1.4.1-0.1; then
197
191
    gpg=/usr/bin/gpg2
253
247
# initrd; it is intended to affect the initrd.img file itself, since
254
248
# it now contains secret key files.  There is, however, no other way
255
249
# to set the permission of the initrd.img file without a race
256
 
# condition.  This umask is set by "initramfs-tools-conf", installed
257
 
# as "/usr/share/initramfs-tools/conf.d/mandos-conf".)
 
250
# condition.  This umask is set by "initramfs-tools-hook-conf",
 
251
# installed as "/usr/share/initramfs-tools/conf-hooks.d/mandos".)
258
252
259
253
for full in "${MANDOSDIR}" "${CONFDIR}"; do
260
254
    while [ "$full" != "/" ]; do