Skip to content

Commit

Permalink
dm crypt: set key size early
Browse files Browse the repository at this point in the history
Simplify key size verification (hexadecimal string) and
set key size early in constructor.

(Patch required by later changes.)

Signed-off-by: Milan Broz <mbroz@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
  • Loading branch information
Milan Broz authored and Alasdair G Kergon committed Jan 13, 2011
1 parent 4a1aeb9 commit 69a8cfc
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions drivers/md/dm-crypt.c
Original file line number Diff line number Diff line change
Expand Up @@ -973,15 +973,15 @@ static void crypt_encode_key(char *hex, u8 *key, unsigned int size)

static int crypt_set_key(struct crypt_config *cc, char *key)
{
unsigned key_size = strlen(key) >> 1;

if (cc->key_size && cc->key_size != key_size)
/* The key size may not be changed. */
if (cc->key_size != (strlen(key) >> 1))
return -EINVAL;

cc->key_size = key_size; /* initial settings */
/* Hyphen (which gives a key_size of zero) means there is no key. */
if (!cc->key_size && strcmp(key, "-"))
return -EINVAL;

if ((!key_size && strcmp(key, "-")) ||
(key_size && crypt_decode_key(cc->key, key, key_size) < 0))
if (cc->key_size && crypt_decode_key(cc->key, key, cc->key_size) < 0)
return -EINVAL;

set_bit(DM_CRYPT_KEY_VALID, &cc->flags);
Expand Down Expand Up @@ -1194,6 +1194,7 @@ static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv)
ti->error = "Cannot allocate encryption context";
return -ENOMEM;
}
cc->key_size = key_size;

ti->private = cc;
ret = crypt_ctr_cipher(ti, argv[0], argv[1]);
Expand Down

0 comments on commit 69a8cfc

Please sign in to comment.