Hi, there was actually (alt least one) problem with my previous patch: if the user typed in an empty first password, the question for the second password would never be presented again. The attached new patch (against the unpatched blockdev-keygen) should fix that. Best regards, Olaf -- Olaf Mandel <olaf@mandel.name> <http://www.olaf.mandel.name/> PGP key: 1024D/33398848 2002-09-19 Fingerprint: 0E33 BEA6 1A71 9C5E 62BD FC0E 99A7 D2C6 3339 8848
--- partman-crypto-49/blockdev-keygen.orig 2012-01-20 20:11:31.603528151 +0100 +++ partman-crypto-49/blockdev-keygen 2012-01-21 11:29:40.473528152 +0100 @@ -31,25 +31,30 @@ } get_passphrase () { - local pass_ok + local templ last_RET pass pass_ok pass_ok=0 while [ $pass_ok -eq 0 ]; do templ="partman-crypto/passphrase" - db_set $templ "" - db_fset $templ seen false db_subst $templ DEVICE "$description" db_input critical $templ templ="partman-crypto/passphrase-again" - db_set $templ "" - db_fset $templ seen false db_input critical $templ db_go || return 1 - db_get partman-crypto/passphrase || RET='' + templ="partman-crypto/passphrase" + db_get $templ || RET='' pass=$RET + db_set $templ "" + db_fset $templ seen false + + templ="partman-crypto/passphrase-again" + db_get $templ || RET='' + last_RET=$RET + db_set $templ "" + db_fset $templ seen false if [ -z "$pass" ]; then templ="partman-crypto/passphrase-empty" db_fset $templ seen false @@ -57,8 +62,7 @@ continue fi - db_get partman-crypto/passphrase-again || RET='' - if [ "$pass" != "$RET" ]; then + if [ "$pass" != "$last_RET" ]; then templ="partman-crypto/passphrase-mismatch" db_fset $templ seen false db_input critical $templ @@ -67,14 +71,15 @@ if passphrase_is_weak "$pass"; then templ="partman-crypto/weak_passphrase" - db_set $templ false - db_fset $templ seen false db_subst $templ MINIMUM $minlen db_input critical $templ || true db_go || true db_get $templ || RET='' + last_RET=$RET + db_set $templ false + db_fset $templ seen false - if [ "$RET" != true ]; then + if [ "$last_RET" != true ]; then # user doesn't want to force weak passphrase continue fi @@ -83,9 +88,6 @@ pass_ok=1 done - db_set partman-crypto/passphrase "" - db_set partman-crypto/passphrase-again "" - if [ $pass_ok -eq 1 ]; then echo "$pass" fi
Attachment:
signature.asc
Description: OpenPGP digital signature