mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
qemu: domain: Add helpers for partially clearing qemuDomainSecretInfoPtr
It's desired to keep the alias around to allow referencing of the secret object used with qemu. Add set of APIs which will destroy all data except the alias. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
c750e1c491
commit
02b031a475
@ -949,38 +949,65 @@ qemuDomainSecretPlainClear(qemuDomainSecretPlain secret)
|
||||
|
||||
|
||||
static void
|
||||
qemuDomainSecretAESClear(qemuDomainSecretAES secret)
|
||||
qemuDomainSecretAESClear(qemuDomainSecretAES secret,
|
||||
bool keepAlias)
|
||||
{
|
||||
if (!keepAlias)
|
||||
VIR_FREE(secret.alias);
|
||||
|
||||
VIR_FREE(secret.username);
|
||||
VIR_FREE(secret.alias);
|
||||
VIR_FREE(secret.iv);
|
||||
VIR_FREE(secret.ciphertext);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
qemuDomainSecretInfoClear(qemuDomainSecretInfoPtr secinfo,
|
||||
bool keepAlias)
|
||||
{
|
||||
if (!secinfo)
|
||||
return;
|
||||
|
||||
switch ((qemuDomainSecretInfoType) secinfo->type) {
|
||||
case VIR_DOMAIN_SECRET_INFO_TYPE_PLAIN:
|
||||
qemuDomainSecretPlainClear(secinfo->s.plain);
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_SECRET_INFO_TYPE_AES:
|
||||
qemuDomainSecretAESClear(secinfo->s.aes, keepAlias);
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_SECRET_INFO_TYPE_LAST:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
qemuDomainSecretInfoFree(qemuDomainSecretInfoPtr *secinfo)
|
||||
{
|
||||
if (!*secinfo)
|
||||
return;
|
||||
|
||||
switch ((qemuDomainSecretInfoType) (*secinfo)->type) {
|
||||
case VIR_DOMAIN_SECRET_INFO_TYPE_PLAIN:
|
||||
qemuDomainSecretPlainClear((*secinfo)->s.plain);
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_SECRET_INFO_TYPE_AES:
|
||||
qemuDomainSecretAESClear((*secinfo)->s.aes);
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_SECRET_INFO_TYPE_LAST:
|
||||
break;
|
||||
}
|
||||
qemuDomainSecretInfoClear(*secinfo, false);
|
||||
|
||||
VIR_FREE(*secinfo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* qemuDomainSecretInfoDestroy:
|
||||
* @secinfo: object to destroy
|
||||
*
|
||||
* Removes any data unnecessary for further use, but keeps alias allocated.
|
||||
*/
|
||||
void
|
||||
qemuDomainSecretInfoDestroy(qemuDomainSecretInfoPtr secinfo)
|
||||
{
|
||||
qemuDomainSecretInfoClear(secinfo, true);
|
||||
}
|
||||
|
||||
|
||||
static virClassPtr qemuDomainDiskPrivateClass;
|
||||
static void qemuDomainDiskPrivateDispose(void *obj);
|
||||
|
||||
|
@ -836,6 +836,8 @@ bool qemuDomainSupportsEncryptedSecret(qemuDomainObjPrivatePtr priv);
|
||||
void qemuDomainSecretInfoFree(qemuDomainSecretInfoPtr *secinfo)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
void qemuDomainSecretInfoDestroy(qemuDomainSecretInfoPtr secinfo);
|
||||
|
||||
void qemuDomainSecretDiskDestroy(virDomainDiskDefPtr disk)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user