diff --git a/sys/dev/disk/dm/crypt/dm_target_crypt.c b/sys/dev/disk/dm/crypt/dm_target_crypt.c --- a/sys/dev/disk/dm/crypt/dm_target_crypt.c +++ b/sys/dev/disk/dm/crypt/dm_target_crypt.c @@ -471,6 +471,12 @@ crypto_mode = strsep(&argv[0], "-"); iv_opt = strsep(&argv[0], "-"); iv_mode = strsep(&iv_opt, ":"); + if (crypto_alg == NULL || crypto_mode == NULL || + iv_opt == NULL || iv_mode == NULL) { + kprintf("dm_target_crypt: invalid cipher specification\n"); + kfree(status_str, M_DMCRYPT); + return EINVAL; + } hex_key = argv[1]; iv_offset = strtouq(argv[2], NULL, 0); dev = argv[3];