/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-script

  • 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:
57
57
# Get DEVICE from /conf/initramfs.conf and other files
58
58
. /conf/initramfs.conf
59
59
for conf in /conf/conf.d/*; do
60
 
    [ -f "${conf}" ] && . "${conf}"
 
60
    [ -f ${conf} ] && . ${conf}
61
61
done
62
62
if [ -e /conf/param.conf ]; then
63
63
    . /conf/param.conf
113
113
test -x "$mandos"
114
114
 
115
115
# parse /conf/conf.d/cryptroot.  Format:
116
 
# target=sda2_crypt,source=/dev/sda2,rootdev,key=none,keyscript=/foo/bar/baz
117
 
# Is the root device specially marked?
118
 
changeall=yes
119
 
while read -r options; do
120
 
    case "$options" in
121
 
        rootdev,*|*,rootdev,*|*,rootdev)
122
 
            # If the root device is specially marked, don't change all
123
 
            # lines in crypttab by default.
124
 
            changeall=no
125
 
            ;;
126
 
    esac
127
 
done < /conf/conf.d/cryptroot
128
 
 
 
116
# target=sda2_crypt,source=/dev/sda2,key=none,keyscript=/foo/bar/baz
129
117
exec 3>/conf/conf.d/cryptroot.mandos
130
 
while read -r options; do
 
118
while read options; do
131
119
    newopts=""
132
 
    keyscript=""
133
 
    changethis="$changeall"
134
120
    # Split option line on commas
135
121
    old_ifs="$IFS"
136
122
    IFS="$IFS,"
142
128
                newopts="$newopts,$opt"
143
129
                ;;
144
130
            "") : ;;
145
 
            # Always use Mandos on the root device, if marked
146
 
            rootdev)
147
 
                changethis=yes
148
 
                newopts="$newopts,$opt"
149
 
                ;;
150
 
            # Don't use Mandos on resume device, if marked
151
 
            resumedev)
152
 
                changethis=no
153
 
                newopts="$newopts,$opt"
154
 
                ;;
155
131
            *)
156
132
                newopts="$newopts,$opt"
157
133
                ;;
160
136
    IFS="$old_ifs"
161
137
    unset old_ifs
162
138
    # If there was no keyscript option, add one.
163
 
    if [ "$changethis" = yes ] && [ -z "$keyscript" ]; then
 
139
    if [ -z "$keyscript" ]; then
164
140
        replace_cryptroot=yes
165
141
        newopts="$newopts,keyscript=$mandos"
166
142
    fi