diff --git a/ChangeLog b/ChangeLog index 0414edbc..fc6731e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * Support Nettle 2.4 crypto backend (for ripemd160). * If device is not rotational, do not use Gutmann wipe method. * Add crypt_last_error() API call. + * Fix luksKillSLot exit code if slot is inactive or invalid. 2011-09-22 Milan Broz * Support key-slot option for luksOpen (use only explicit keyslot). diff --git a/src/cryptsetup.c b/src/cryptsetup.c index d6fccc8d..22fc9187 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -646,6 +646,7 @@ static int action_luksKillSlot(int arg __attribute__((unused))) case CRYPT_SLOT_INACTIVE: log_err(_("Key %d not active. Can't wipe.\n"), opt_key_slot); case CRYPT_SLOT_INVALID: + r = -EINVAL; goto out; } @@ -1301,7 +1302,7 @@ int main(int argc, const char **argv) if (!strcmp(aname, "luksKillSlot") && action_argc > 1) opt_key_slot = atoi(action_argv[1]); if (opt_key_slot != CRYPT_ANY_SLOT && - (opt_key_slot < 0 || opt_key_slot > crypt_keyslot_max(CRYPT_LUKS1))) + (opt_key_slot < 0 || opt_key_slot >= crypt_keyslot_max(CRYPT_LUKS1))) usage(popt_context, EXIT_FAILURE, _("Key slot is invalid."), poptGetInvocationName(popt_context)); diff --git a/tests/compat-test b/tests/compat-test index bef8b9b6..3499faf8 100755 --- a/tests/compat-test +++ b/tests/compat-test @@ -160,6 +160,8 @@ echo "key1" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail # Unsuccessful Key Delete - nothing may change prepare "[7] unsuccessful delete" echo "invalid" | $CRYPTSETUP luksKillSlot $LOOPDEV 1 2>/dev/null && fail +$CRYPTSETUP -q luksKillSlot $LOOPDEV 8 2>/dev/null && fail +$CRYPTSETUP -q luksKillSlot $LOOPDEV 7 2>/dev/null && fail check # Delete Key Test