]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Don't deref NULL actual network in virDomainNetGetActualHostdev()
authorPeter Krempa <pkrempa@redhat.com>
Wed, 4 Sep 2013 15:32:12 +0000 (17:32 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 5 Sep 2013 07:41:44 +0000 (09:41 +0200)
In commit 991270db99690 I've used virDomainNetGetActualHostdev() to get
the actual hostdev from a network when removing the network from the
list to avoid leaving the hostdev in the list. I didn't notice that this
function doesn't check if the actual network is allocated and
dereferences it. This crashes the daemon when cleaning up a domain
object in early startup phases when the actual network definition isn't
allocated. When the actual definition isn't present, the hostdev that
might correspond to it won't be present anyways so it's safe to return
NULL.

Thanks to Cole Robinson for noticing this problem.

src/conf/domain_conf.c

index cef4cf948f8ddadd51237c452595cd612bd6ad03..276c6bac8d432fab9e45a25b21b3733e63e5dc58 100644 (file)
@@ -17875,6 +17875,7 @@ virDomainNetGetActualHostdev(virDomainNetDefPtr iface)
     if (iface->type == VIR_DOMAIN_NET_TYPE_HOSTDEV)
         return &iface->data.hostdev.def;
     if (iface->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
+        iface->data.network.actual &&
         iface->data.network.actual->type == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
         return &iface->data.network.actual->data.hostdev.def;
     }