From cc3b39980b2f4bcfdda6ec74db4bc57d54aa37d5 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sun, 9 Oct 2011 13:46:03 +0000 Subject: [PATCH] Fix luksKillSLot exit code if slot is inactive or invalid. (Issue 108) git-svn-id: https://cryptsetup.googlecode.com/svn/trunk@624 36d66b0a-2a48-0410-832c-cd162a569da5 --- ChangeLog | 1 + src/cryptsetup.c | 3 ++- tests/compat-test | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) 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