/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-03-17 20:40:55 UTC
  • 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:
75
75
 
76
76
# Make directories
77
77
install --directory --mode=u=rwx,go=rx "${DESTDIR}${CONFDIR}" \
78
 
        "${DESTDIR}${MANDOSDIR}" "${DESTDIR}${HOOKDIR}"
 
78
        "${DESTDIR}${MANDOSDIR}" "${DESTDIR}${HOOKDIR}" \
 
79
        "${DESTDIR}${PLUGINHELPERDIR}"
79
80
install --owner=${mandos_user} --group=${mandos_group} --directory \
80
 
        --mode=u=rwx "${DESTDIR}${PLUGINDIR}" \
81
 
        "${DESTDIR}${PLUGINHELPERDIR}"
 
81
    --mode=u=rwx "${DESTDIR}${PLUGINDIR}"
82
82
 
83
83
# Copy the Mandos plugin runner
84
84
copy_exec "$libdir"/mandos/plugin-runner "${MANDOSDIR}"
142
142
for conf in /etc/initramfs-tools/conf.d/*; do
143
143
    if [ -n `basename \"$conf\" | grep '^[[:alnum:]][[:alnum:]\._-]*$' \
144
144
        | grep -v '\.dpkg-.*$'` ]; then
145
 
        [ -f "${conf}" ] && . "${conf}"
 
145
        [ -f ${conf} ] && . ${conf}
146
146
    fi
147
147
done
148
148
export DEVICE
157
157
    if [ -x "$hook" ]; then
158
158
        # Copy any files needed by the network hook
159
159
        MANDOSNETHOOKDIR=/etc/mandos/network-hooks.d MODE=files \
160
 
            VERBOSITY=0 "$hook" files | while read -r file target; do
 
160
            VERBOSITY=0 "$hook" files | while read file target; do
161
161
            if [ ! -e "${file}" ]; then
162
162
                echo "WARNING: file ${file} not found, requested by Mandos network hook '${hook##*/}'" >&2
163
163
            fi
169
169
        done
170
170
        # Copy and load any modules needed by the network hook
171
171
        MANDOSNETHOOKDIR=/etc/mandos/network-hooks.d MODE=modules \
172
 
            VERBOSITY=0 "$hook" modules | while read -r module; do
173
 
            force_load "$module"
 
172
            VERBOSITY=0 "$hook" modules | while read module; do
 
173
            if [ -z "${target}" ]; then
 
174
                force_load "$module"
 
175
            fi
174
176
        done
175
177
    fi
176
178
done
184
186
            copy_exec /usr/bin/gpgconf
185
187
        fi
186
188
        gpg="`/usr/bin/gpgconf|sed --quiet --expression='s/^gpg:[^:]*://p'`"
187
 
        gpgagent="`/usr/bin/gpgconf|sed --quiet --expression='s/^gpg-agent:[^:]*://p'`"
188
 
        # Newer versions of GnuPG 2 requires the gpg-agent binary
189
 
        if [ -e "$gpgagent" ] && [ ! -e "${DESTDIR}$gpgagent" ]; then
190
 
            copy_exec "$gpgagent"
191
 
        fi
192
189
    fi
193
190
elif dpkg --compare-versions "$libgpgme11_version" ge 1.4.1-0.1; then
194
191
    gpg=/usr/bin/gpg2