Commit 80e27684 authored by Dan Carpenter's avatar Dan Carpenter Committed by Jens Axboe
Browse files

nvme-auth: uninitialized variable in nvme_auth_transform_key()



A couple of the early error gotos call kfree_sensitive(transformed_key);
before "transformed_key" has been initialized.

Fixes: db1312dd ("nvmet: implement basic In-Band Authentication")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 4daf7fa0
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -272,27 +272,34 @@ u8 *nvme_auth_transform_key(struct nvme_dhchap_key *key, char *nqn)
	shash->tfm = key_tfm;
	ret = crypto_shash_setkey(key_tfm, key->key, key->len);
	if (ret < 0)
		goto out_free_shash;
		goto out_free_transformed_key;
	ret = crypto_shash_init(shash);
	if (ret < 0)
		goto out_free_shash;
		goto out_free_transformed_key;
	ret = crypto_shash_update(shash, nqn, strlen(nqn));
	if (ret < 0)
		goto out_free_shash;
		goto out_free_transformed_key;
	ret = crypto_shash_update(shash, "NVMe-over-Fabrics", 17);
	if (ret < 0)
		goto out_free_shash;
		goto out_free_transformed_key;
	ret = crypto_shash_final(shash, transformed_key);
	if (ret < 0)
		goto out_free_transformed_key;

	kfree(shash);
	crypto_free_shash(key_tfm);

	return transformed_key;

out_free_transformed_key:
	kfree_sensitive(transformed_key);
out_free_shash:
	kfree(shash);
out_free_key:
	crypto_free_shash(key_tfm);
	if (ret < 0) {
		kfree_sensitive(transformed_key);

	return ERR_PTR(ret);
}
	return transformed_key;
}
EXPORT_SYMBOL_GPL(nvme_auth_transform_key);

static int nvme_auth_hash_skey(int hmac_id, u8 *skey, size_t skey_len, u8 *hkey)