mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 20:45:18 +00:00
util: identity: Harden virIdentitySetCurrent()
Don't unref the old identity unless we set the new one correctly and unref the new one on failure to set it so that we don't leak any references or use invalid pointers.
This commit is contained in:
parent
785fd9fa12
commit
ad886fa6c8
@ -111,15 +111,17 @@ int virIdentitySetCurrent(virIdentityPtr ident)
|
||||
return -1;
|
||||
|
||||
old = virThreadLocalGet(&virIdentityCurrent);
|
||||
virObjectUnref(old);
|
||||
|
||||
if (virThreadLocalSet(&virIdentityCurrent,
|
||||
virObjectRef(ident)) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Unable to set thread local identity"));
|
||||
virObjectUnref(ident);
|
||||
return -1;
|
||||
}
|
||||
|
||||
virObjectUnref(old);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user