Commit 0d857f44 authored by Yuriy Umanets's avatar Yuriy Umanets Committed by Tomasz Zawadzki
Browse files

bdev/crypto: Zero out key and key2 before release.



Even released memory contains key and key2 until it is re-allocated
for other purposes. Zero out key and key2 when not longer needed.

Signed-off-by: default avatarYuriy Umanets <yumanets@nvidia.com>
Change-Id: If80f3faeb98b5b5acab7f2f857f284909247d1ac
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11877


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
parent 15a5bd82
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -1693,11 +1693,17 @@ vbdev_crypto_insert_name(const char *bdev_name, const char *vbdev_name,

	/* Error cleanup paths. */
error_cipher:
	if (name->key2) {
		memset(name->key2, 0, strlen(name->key2));
		free(name->key2);
	}
error_alloc_key2:
error_invalid_key2:
error_invalid_key:
	if (name->key) {
		memset(name->key, 0, strlen(name->key));
		free(name->key);
	}
error_alloc_key:
error_invalid_pmd:
	free(name->drv_name);
@@ -1759,10 +1765,14 @@ vbdev_crypto_finish(void)
	while ((name = TAILQ_FIRST(&g_bdev_names))) {
		TAILQ_REMOVE(&g_bdev_names, name, link);
		free(name->drv_name);
		memset(name->key, 0, strlen(name->key));
		free(name->key);
		free(name->bdev_name);
		free(name->vbdev_name);
		if (name->key2) {
			memset(name->key2, 0, strlen(name->key2));
			free(name->key2);
		}
		free(name);
	}

@@ -2119,8 +2129,12 @@ delete_crypto_disk(struct spdk_bdev *bdev, spdk_delete_crypto_complete cb_fn,
			free(name->bdev_name);
			free(name->vbdev_name);
			free(name->drv_name);
			memset(name->key, 0, strlen(name->key));
			free(name->key);
			if (name->key2) {
				memset(name->key2, 0, strlen(name->key2));
				free(name->key2);
			}
			free(name);
			break;
		}