/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:
70
70
CONFDIR="/conf/conf.d/mandos"
71
71
MANDOSDIR="/lib/mandos"
72
72
PLUGINDIR="${MANDOSDIR}/plugins.d"
73
 
PLUGINHELPERDIR="${MANDOSDIR}/plugins-helpers"
 
73
PLUGINHELPERDIR="${MANDOSDIR}/plugin-helpers"
74
74
HOOKDIR="${MANDOSDIR}/network-hooks.d"
75
75
 
76
76
# Make directories
219
219
    if [ -d "$file" ]; then
220
220
        continue
221
221
    fi
222
 
    cp --archive --sparse=always "$file" "${DESTDIR}${CONFDIR}"
223
 
    chown ${mandos_user}:${mandos_group} \
224
 
        "${DESTDIR}${CONFDIR}/`basename \"$file\"`"
 
222
    case "$file" in
 
223
        *~|.*|\#*\#|*.dpkg-old|*.dpkg-bak|*.dpkg-new|*.dpkg-divert)
 
224
            : ;;
 
225
        "*") : ;;
 
226
        *)
 
227
            cp --archive --sparse=always "$file" \
 
228
               "${DESTDIR}${CONFDIR}"
 
229
            chown ${mandos_user}:${mandos_group} \
 
230
                  "${DESTDIR}${CONFDIR}/`basename \"$file\"`"
 
231
            ;;
 
232
    esac
225
233
done
 
234
# Use Diffie-Hellman parameters file if available
 
235
if [ -e "${DESTDIR}${CONFDIR}"/dhparams.pem ]; then
 
236
    sed --in-place \
 
237
        --expression="1i--options-for=mandos-client:--dh-params=${CONFDIR}/dhparams.pem" \
 
238
        "${DESTDIR}/${CONFDIR}/plugin-runner.conf"
 
239
fi
226
240
 
227
241
# /lib/mandos/plugin-runner will drop priviliges, but needs access to
228
242
# its plugin directory and its config file.  However, since almost all
252
266
done
253
267
for dir in "${DESTDIR}"/lib* "${DESTDIR}"/usr/lib*; do
254
268
    if [ -d "$dir" ]; then
255
 
        find "$dir" \! -perm -u+rw,g+r -prune -or -print0 \
256
 
            | xargs --null --no-run-if-empty chmod a+rX
 
269
        find "$dir" \! -perm -u+rw,g+r -prune -or \! -type l -print0 \
 
270
            | xargs --null --no-run-if-empty chmod a+rX --
257
271
    fi
258
272
done