DragonFlyBSD Kernel Audit
DF-1635 / fix.diff
← back to finding ↓ download raw
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];