[PATCH 1/3] util: identity: Harden virIdentitySetCurrent()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
---
 src/util/viridentity.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/util/viridentity.c b/src/util/viridentity.c
index 6f3baee..9b8ba4a 100644
--- a/src/util/viridentity.c
+++ b/src/util/viridentity.c
@@ -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;
 }

-- 
2.2.2

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]