Some public methods in libvirt-gobject don't have g_return_if_fail checks on their arguments. It happens that GNOME Boxes tries to call gvir_connection_find_storage_pool_by_name with a NULL GVirConnection causing a crash https://bugzilla.gnome.org/show_bug.cgi?id=676216 While GNOME Boxes needs to be fixed not to pass an invalid value to this function, it's better if libvirt-object sanity checks the argument it is passed by the caller before using them. In this commit, I've went over all libvirt-gobject public functions to add g_return_if_fail checks where needed. --- libvirt-gobject/libvirt-gobject-connection.c | 122 +++++++++++++++++--- libvirt-gobject/libvirt-gobject-domain-device.c | 4 + libvirt-gobject/libvirt-gobject-domain-disk.c | 1 + libvirt-gobject/libvirt-gobject-domain-interface.c | 1 + libvirt-gobject/libvirt-gobject-domain-snapshot.c | 7 +- libvirt-gobject/libvirt-gobject-domain.c | 70 +++++++++-- libvirt-gobject/libvirt-gobject-interface.c | 13 ++- libvirt-gobject/libvirt-gobject-manager.c | 27 +++-- libvirt-gobject/libvirt-gobject-network-filter.c | 14 ++- libvirt-gobject/libvirt-gobject-network.c | 13 ++- libvirt-gobject/libvirt-gobject-node-device.c | 14 ++- libvirt-gobject/libvirt-gobject-secret.c | 6 +- libvirt-gobject/libvirt-gobject-storage-pool.c | 61 ++++++++-- libvirt-gobject/libvirt-gobject-storage-vol.c | 33 ++++-- libvirt-gobject/libvirt-gobject-stream.c | 6 + 15 files changed, 321 insertions(+), 71 deletions(-) diff --git a/libvirt-gobject/libvirt-gobject-connection.c b/libvirt-gobject/libvirt-gobject-connection.c index b12669d..3a99034 100644 --- a/libvirt-gobject/libvirt-gobject-connection.c +++ b/libvirt-gobject/libvirt-gobject-connection.c @@ -407,7 +407,14 @@ gboolean gvir_connection_open(GVirConnection *conn, GCancellable *cancellable, GError **err) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; + + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), FALSE); + g_return_val_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable), + FALSE); + g_return_val_if_fail((err == NULL) || (*err == NULL), FALSE); + + priv = conn->priv; if (g_cancellable_set_error_if_cancelled(cancellable, err)) return FALSE; @@ -486,6 +493,9 @@ void gvir_connection_open_async(GVirConnection *conn, { GSimpleAsyncResult *res; + g_return_if_fail(GVIR_IS_CONNECTION(conn)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); + res = g_simple_async_result_new(G_OBJECT(conn), callback, user_data, @@ -521,8 +531,12 @@ gboolean gvir_connection_open_finish(GVirConnection *conn, gboolean gvir_connection_is_open(GVirConnection *conn) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; gboolean open = TRUE; + + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), FALSE); + + priv = conn->priv; g_mutex_lock(priv->lock); if (!priv->conn) open = FALSE; @@ -532,7 +546,12 @@ gboolean gvir_connection_is_open(GVirConnection *conn) void gvir_connection_close(GVirConnection *conn) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; + + g_return_if_fail(GVIR_IS_CONNECTION(conn)); + + priv = conn->priv; + g_debug("Close GVirConnection=%p", conn); g_mutex_lock(priv->lock); @@ -613,7 +632,7 @@ gboolean gvir_connection_fetch_domains(GVirConnection *conn, GCancellable *cancellable, GError **err) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GHashTable *doms; gchar **inactive = NULL; gint ninactive = 0; @@ -624,6 +643,12 @@ gboolean gvir_connection_fetch_domains(GVirConnection *conn, virConnectPtr vconn = NULL; GError *lerr = NULL; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), FALSE); + g_return_val_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable), + FALSE); + g_return_val_if_fail((err == NULL) || (*err == NULL), FALSE); + + priv = conn->priv; g_mutex_lock(priv->lock); if (!priv->conn) { g_set_error_literal(err, GVIR_CONNECTION_ERROR, @@ -742,7 +767,7 @@ gboolean gvir_connection_fetch_storage_pools(GVirConnection *conn, GCancellable *cancellable, GError **err) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GHashTable *pools; gchar **inactive = NULL; gint ninactive = 0; @@ -753,6 +778,12 @@ gboolean gvir_connection_fetch_storage_pools(GVirConnection *conn, virConnectPtr vconn = NULL; GError *lerr = NULL; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), FALSE); + g_return_val_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable), + FALSE); + g_return_val_if_fail((err == NULL) || (*err == NULL), FALSE); + + priv = conn->priv; g_mutex_lock(priv->lock); if (!priv->conn) { g_set_error_literal(err, GVIR_CONNECTION_ERROR, @@ -891,6 +922,9 @@ void gvir_connection_fetch_domains_async(GVirConnection *conn, { GSimpleAsyncResult *res; + g_return_if_fail(GVIR_IS_CONNECTION(conn)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); + res = g_simple_async_result_new(G_OBJECT(conn), callback, user_data, @@ -950,6 +984,9 @@ void gvir_connection_fetch_storage_pools_async(GVirConnection *conn, { GSimpleAsyncResult *res; + g_return_if_fail(GVIR_IS_CONNECTION(conn)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); + res = g_simple_async_result_new(G_OBJECT(conn), callback, user_data, @@ -983,8 +1020,9 @@ gboolean gvir_connection_fetch_storage_pools_finish(GVirConnection *conn, const gchar *gvir_connection_get_uri(GVirConnection *conn) { - GVirConnectionPrivate *priv = conn->priv; - return priv->uri; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + + return conn->priv->uri; } static void gvir_domain_ref(gpointer obj, gpointer ignore G_GNUC_UNUSED) @@ -1004,9 +1042,12 @@ static void gvir_domain_ref(gpointer obj, gpointer ignore G_GNUC_UNUSED) */ GList *gvir_connection_get_domains(GVirConnection *conn) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GList *domains = NULL; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + + priv = conn->priv; g_mutex_lock(priv->lock); if (priv->domains != NULL) { domains = g_hash_table_get_values(priv->domains); @@ -1030,9 +1071,12 @@ GList *gvir_connection_get_domains(GVirConnection *conn) */ GList *gvir_connection_get_storage_pools(GVirConnection *conn) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GList *pools = NULL; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + + priv = conn->priv; g_mutex_lock(priv->lock); if (priv->pools != NULL) { pools = g_hash_table_get_values(priv->pools); @@ -1054,8 +1098,13 @@ GList *gvir_connection_get_storage_pools(GVirConnection *conn) GVirDomain *gvir_connection_get_domain(GVirConnection *conn, const gchar *uuid) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GVirDomain *dom; + + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + g_return_val_if_fail(uuid != NULL, NULL); + + priv = conn->priv; g_mutex_lock(priv->lock); dom = g_hash_table_lookup(priv->domains, uuid); if (dom) @@ -1075,9 +1124,13 @@ GVirDomain *gvir_connection_get_domain(GVirConnection *conn, GVirStoragePool *gvir_connection_get_storage_pool(GVirConnection *conn, const gchar *uuid) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GVirStoragePool *pool; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + g_return_val_if_fail(uuid != NULL, NULL); + + priv = conn->priv; g_mutex_lock(priv->lock); pool = g_hash_table_lookup(priv->pools, uuid); if (pool) @@ -1098,10 +1151,13 @@ GVirStoragePool *gvir_connection_get_storage_pool(GVirConnection *conn, GVirDomain *gvir_connection_find_domain_by_id(GVirConnection *conn, gint id) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GHashTableIter iter; gpointer key, value; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + + priv = conn->priv; g_mutex_lock(priv->lock); g_hash_table_iter_init(&iter, priv->domains); @@ -1132,10 +1188,14 @@ GVirDomain *gvir_connection_find_domain_by_id(GVirConnection *conn, GVirDomain *gvir_connection_find_domain_by_name(GVirConnection *conn, const gchar *name) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GHashTableIter iter; gpointer key, value; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + g_return_val_if_fail(name != NULL, NULL); + + priv = conn->priv; g_mutex_lock(priv->lock); g_hash_table_iter_init(&iter, priv->domains); @@ -1168,10 +1228,14 @@ GVirDomain *gvir_connection_find_domain_by_name(GVirConnection *conn, GVirStoragePool *gvir_connection_find_storage_pool_by_name(GVirConnection *conn, const gchar *name) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; GHashTableIter iter; gpointer key, value; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + g_return_val_if_fail(name != NULL, NULL); + + priv = conn->priv; g_mutex_lock(priv->lock); g_hash_table_iter_init(&iter, priv->pools); @@ -1253,12 +1317,17 @@ GVirDomain *gvir_connection_create_domain(GVirConnection *conn, { gchar *xml; virDomainPtr handle; - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; + + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN(conf), NULL); + g_return_val_if_fail((err == NULL) || (*err == NULL), NULL); xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(conf)); g_return_val_if_fail(xml != NULL, NULL); + priv = conn->priv; handle = virDomainDefineXML(priv->conn, xml); g_free(xml); if (!handle) { @@ -1302,12 +1371,17 @@ GVirDomain *gvir_connection_start_domain(GVirConnection *conn, { gchar *xml; virDomainPtr handle; - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; + + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN(conf), NULL); + g_return_val_if_fail((err == NULL) || (*err == NULL), NULL); xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(conf)); g_return_val_if_fail(xml != NULL, NULL); + priv = conn->priv; handle = virDomainCreateXML(priv->conn, xml, flags); g_free(xml); if (!handle) { @@ -1350,12 +1424,17 @@ GVirStoragePool *gvir_connection_create_storage_pool GError **err) { const gchar *xml; virStoragePoolPtr handle; - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; + + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + g_return_val_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(conf), NULL); + g_return_val_if_fail((err == NULL) || (*err == NULL), NULL); xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(conf)); g_return_val_if_fail(xml != NULL, NULL); + priv = conn->priv; if (!(handle = virStoragePoolDefineXML(priv->conn, xml, flags))) { gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, flags, @@ -1390,10 +1469,14 @@ GVirStoragePool *gvir_connection_create_storage_pool GVirNodeInfo *gvir_connection_get_node_info(GVirConnection *conn, GError **err) { - GVirConnectionPrivate *priv = conn->priv; + GVirConnectionPrivate *priv; virNodeInfo info; GVirNodeInfo *ret; + g_return_val_if_fail(GVIR_IS_CONNECTION(conn), NULL); + g_return_val_if_fail((err == NULL) || (*err == NULL), NULL); + + priv = conn->priv; if (virNodeGetInfo(priv->conn, &info) < 0) { gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, 0, @@ -1480,6 +1563,9 @@ void gvir_connection_get_capabilities_async(GVirConnection *conn, { GSimpleAsyncResult *res; + g_return_if_fail(GVIR_IS_CONNECTION(conn)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); + res = g_simple_async_result_new(G_OBJECT(conn), callback, user_data, diff --git a/libvirt-gobject/libvirt-gobject-domain-device.c b/libvirt-gobject/libvirt-gobject-domain-device.c index 9a65468..f2f3dfc 100644 --- a/libvirt-gobject/libvirt-gobject-domain-device.c +++ b/libvirt-gobject/libvirt-gobject-domain-device.c @@ -167,6 +167,8 @@ virDomainPtr gvir_domain_device_get_domain_handle(GVirDomainDevice *self) */ GVirDomain *gvir_domain_device_get_domain(GVirDomainDevice *device) { + g_return_val_if_fail(GVIR_IS_DOMAIN_DEVICE(device), NULL); + return g_object_ref (device->priv->domain); } @@ -180,6 +182,8 @@ GVirDomain *gvir_domain_device_get_domain(GVirDomainDevice *device) */ GVirConfigDomainDevice *gvir_domain_device_get_config(GVirDomainDevice *device) { + g_return_val_if_fail(GVIR_IS_DOMAIN_DEVICE(device), NULL); + return g_object_ref (device->priv->config); } diff --git a/libvirt-gobject/libvirt-gobject-domain-disk.c b/libvirt-gobject/libvirt-gobject-domain-disk.c index 607e26c..46b47fd 100644 --- a/libvirt-gobject/libvirt-gobject-domain-disk.c +++ b/libvirt-gobject/libvirt-gobject-domain-disk.c @@ -124,6 +124,7 @@ GVirDomainDiskStats *gvir_domain_disk_get_stats(GVirDomainDisk *self, GError **e const gchar *path; g_return_val_if_fail(GVIR_IS_DOMAIN_DISK(self), NULL); + g_return_val_if_fail((err == NULL) || (*err == NULL), NULL); handle = gvir_domain_device_get_domain_handle(GVIR_DOMAIN_DEVICE(self)); path = gvir_domain_disk_get_path (self); diff --git a/libvirt-gobject/libvirt-gobject-domain-interface.c b/libvirt-gobject/libvirt-gobject-domain-interface.c index 7087cbc..3ae9a46 100644 --- a/libvirt-gobject/libvirt-gobject-domain-interface.c +++ b/libvirt-gobject/libvirt-gobject-domain-interface.c @@ -126,6 +126,7 @@ GVirDomainInterfaceStats *gvir_domain_interface_get_stats(GVirDomainInterface *s const gchar *path; g_return_val_if_fail(GVIR_IS_DOMAIN_INTERFACE(self), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); handle = gvir_domain_device_get_domain_handle(GVIR_DOMAIN_DEVICE(self)); path = gvir_domain_interface_get_path (self); diff --git a/libvirt-gobject/libvirt-gobject-domain-snapshot.c b/libvirt-gobject/libvirt-gobject-domain-snapshot.c index d06d4d5..11a073c 100644 --- a/libvirt-gobject/libvirt-gobject-domain-snapshot.c +++ b/libvirt-gobject/libvirt-gobject-domain-snapshot.c @@ -161,6 +161,7 @@ G_DEFINE_BOXED_TYPE(GVirDomainSnapshotHandle, gvir_domain_snapshot_handle, const gchar *gvir_domain_snapshot_get_name(GVirDomainSnapshot *snapshot) { + g_return_val_if_fail(GVIR_IS_DOMAIN_SNAPSHOT(snapshot), NULL); #if 0 GVirDomainSnapshotPrivate *priv = snapshot->priv; const char *name; @@ -194,9 +195,13 @@ GVirConfigDomainSnapshot *gvir_domain_snapshot_get_config guint flags, GError **err) { - GVirDomainSnapshotPrivate *priv = snapshot->priv; + GVirDomainSnapshotPrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_DOMAIN_SNAPSHOT(snapshot), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = snapshot->priv; if (!(xml = virDomainSnapshotGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_DOMAIN_SNAPSHOT_ERROR, 0, diff --git a/libvirt-gobject/libvirt-gobject-domain.c b/libvirt-gobject/libvirt-gobject-domain.c index 9be568a..59af63f 100644 --- a/libvirt-gobject/libvirt-gobject-domain.c +++ b/libvirt-gobject/libvirt-gobject-domain.c @@ -274,9 +274,12 @@ G_DEFINE_BOXED_TYPE(GVirDomainInfo, gvir_domain_info, const gchar *gvir_domain_get_name(GVirDomain *dom) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; const char *name; + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), NULL); + + priv = dom->priv; if (!(name = virDomainGetName(priv->handle))) { g_warning("Failed to get domain name on %p", priv->handle); return NULL; @@ -296,9 +299,13 @@ const gchar *gvir_domain_get_uuid(GVirDomain *dom) gint gvir_domain_get_id(GVirDomain *dom, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; gint ret; + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), -1); + g_return_val_if_fail(err == NULL || *err == NULL, -1); + + priv = dom->priv; if ((ret = virDomainGetID(priv->handle)) < 0) { gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, 0, @@ -317,9 +324,13 @@ gboolean gvir_domain_start(GVirDomain *dom, guint flags, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; int ret; + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + + priv = dom->priv; if (flags) ret = virDomainCreateWithFlags(priv->handle, flags); else @@ -344,8 +355,12 @@ gboolean gvir_domain_start(GVirDomain *dom, gboolean gvir_domain_resume(GVirDomain *dom, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + + priv = dom->priv; if (virDomainResume(priv->handle) < 0) { gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, 0, @@ -365,9 +380,13 @@ gboolean gvir_domain_stop(GVirDomain *dom, guint flags, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; int ret; + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + + priv = dom->priv; if (flags) ret = virDomainDestroyFlags(priv->handle, flags); else @@ -391,9 +410,13 @@ gboolean gvir_domain_delete(GVirDomain *dom, guint flags, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; int ret; + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + + priv = dom->priv; if (flags) ret = virDomainUndefineFlags(priv->handle, flags); else @@ -417,8 +440,12 @@ gboolean gvir_domain_shutdown(GVirDomain *dom, guint flags G_GNUC_UNUSED, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; + + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + priv = dom->priv; if (virDomainShutdown(priv->handle) < 0) { gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, 0, @@ -438,8 +465,12 @@ gboolean gvir_domain_reboot(GVirDomain *dom, guint flags, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; + + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + priv = dom->priv; if (virDomainReboot(priv->handle, flags) < 0) { gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, 0, @@ -462,9 +493,13 @@ GVirConfigDomain *gvir_domain_get_config(GVirDomain *dom, guint flags, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = dom->priv; if (!(xml = virDomainGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, 0, @@ -501,12 +536,13 @@ gboolean gvir_domain_set_config(GVirDomain *domain, virConnectPtr conn; virDomainPtr handle; gchar uuid[VIR_UUID_STRING_BUFLEN]; - GVirDomainPrivate *priv = domain->priv; + GVirDomainPrivate *priv; g_return_val_if_fail(GVIR_IS_DOMAIN (domain), FALSE); g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN (conf), FALSE); g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + priv = domain->priv; xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(conf)); g_return_val_if_fail(xml != NULL, FALSE); @@ -556,10 +592,14 @@ gboolean gvir_domain_set_config(GVirDomain *domain, GVirDomainInfo *gvir_domain_get_info(GVirDomain *dom, GError **err) { - GVirDomainPrivate *priv = dom->priv; + GVirDomainPrivate *priv; virDomainInfo info; GVirDomainInfo *ret; + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = dom->priv; if (virDomainGetInfo(priv->handle, &info) < 0) { gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, 0, @@ -613,6 +653,7 @@ void gvir_domain_get_info_async(GVirDomain *dom, GSimpleAsyncResult *res; g_return_if_fail(GVIR_IS_DOMAIN(dom)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); res = g_simple_async_result_new(G_OBJECT(dom), callback, @@ -679,6 +720,7 @@ gchar *gvir_domain_screenshot(GVirDomain *dom, g_return_val_if_fail(GVIR_IS_DOMAIN(dom), NULL); g_return_val_if_fail(GVIR_IS_STREAM(stream), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); priv = dom->priv; g_object_get(stream, "handle", &st, NULL); @@ -725,6 +767,7 @@ gboolean gvir_domain_open_console(GVirDomain *dom, g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); g_return_val_if_fail(GVIR_IS_STREAM(stream), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); priv = dom->priv; g_object_get(stream, "handle", &st, NULL); @@ -769,6 +812,7 @@ gboolean gvir_domain_open_graphics(GVirDomain *dom, gboolean ret = FALSE; g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); priv = dom->priv; @@ -804,6 +848,7 @@ gboolean gvir_domain_suspend (GVirDomain *dom, gboolean ret = FALSE; g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); if (virDomainSuspend(dom->priv->handle) < 0) { gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, @@ -834,6 +879,7 @@ gboolean gvir_domain_save (GVirDomain *dom, GError **err) { g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); if (virDomainManagedSave(dom->priv->handle, flags) < 0) { gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, @@ -889,6 +935,7 @@ void gvir_domain_save_async (GVirDomain *dom, DomainSaveData *data; g_return_if_fail(GVIR_IS_DOMAIN(dom)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); data = g_slice_new0(DomainSaveData); data->flags = flags; @@ -923,6 +970,7 @@ gboolean gvir_domain_save_finish (GVirDomain *dom, g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(dom), gvir_domain_save_async), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), err)) return FALSE; diff --git a/libvirt-gobject/libvirt-gobject-interface.c b/libvirt-gobject/libvirt-gobject-interface.c index 883cf92..ecabb41 100644 --- a/libvirt-gobject/libvirt-gobject-interface.c +++ b/libvirt-gobject/libvirt-gobject-interface.c @@ -159,11 +159,12 @@ G_DEFINE_BOXED_TYPE(GVirInterfaceHandle, gvir_interface_handle, const gchar *gvir_interface_get_name(GVirInterface *iface) { - GVirInterfacePrivate *priv = iface->priv; const char *name; - if (!(name = virInterfaceGetName(priv->handle))) { - g_warning("Failed to get interface name on %p", priv->handle); + g_return_val_if_fail(GVIR_IS_INTERFACE(iface), NULL); + + if (!(name = virInterfaceGetName(iface->priv->handle))) { + g_warning("Failed to get interface name on %p", iface->priv->handle); return NULL; } @@ -184,9 +185,13 @@ GVirConfigInterface *gvir_interface_get_config(GVirInterface *iface, guint flags, GError **err) { - GVirInterfacePrivate *priv = iface->priv; + GVirInterfacePrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_INTERFACE(iface), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = iface->priv; if (!(xml = virInterfaceGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_INTERFACE_ERROR, 0, diff --git a/libvirt-gobject/libvirt-gobject-manager.c b/libvirt-gobject/libvirt-gobject-manager.c index c44e711..d0a2839 100644 --- a/libvirt-gobject/libvirt-gobject-manager.c +++ b/libvirt-gobject/libvirt-gobject-manager.c @@ -131,8 +131,12 @@ GVirManager *gvir_manager_new(void) void gvir_manager_add_connection(GVirManager *man, GVirConnection *conn) { - GVirManagerPrivate *priv = man->priv; + GVirManagerPrivate *priv; + + g_return_if_fail(GVIR_IS_MANAGER(man)); + g_return_if_fail(GVIR_IS_CONNECTION(conn)); + priv = man->priv; g_mutex_lock(priv->lock); g_object_ref(conn); priv->connections = g_list_append(priv->connections, conn); @@ -147,8 +151,12 @@ void gvir_manager_add_connection(GVirManager *man, void gvir_manager_remove_connection(GVirManager *man, GVirConnection *conn) { - GVirManagerPrivate *priv = man->priv; + GVirManagerPrivate *priv; + + g_return_if_fail(GVIR_IS_MANAGER(man)); + g_return_if_fail(GVIR_IS_CONNECTION(conn)); + priv = man->priv; g_mutex_lock(priv->lock); priv->connections = g_list_remove(priv->connections, conn); g_mutex_unlock(priv->lock); @@ -167,16 +175,18 @@ void gvir_manager_remove_connection(GVirManager *man, */ GList *gvir_manager_get_connections(GVirManager *man) { - GVirManagerPrivate *priv = man->priv; + GList *tmp; - GList *tmp = priv->connections; + g_return_val_if_fail(GVIR_IS_MANAGER(man), NULL); + + tmp = man->priv->connections; while (tmp) { GVirConnection *conn = tmp->data; g_object_ref(conn); tmp = tmp->next; } - return g_list_copy(priv->connections); + return g_list_copy(man->priv->connections); } @@ -190,9 +200,12 @@ GList *gvir_manager_get_connections(GVirManager *man) GVirConnection *gvir_manager_find_connection_by_uri(GVirManager *man, const gchar *uri) { - GVirManagerPrivate *priv = man->priv; + GList *tmp; - GList *tmp = priv->connections; + g_return_val_if_fail(GVIR_IS_MANAGER(man), NULL); + g_return_val_if_fail(uri != NULL, NULL); + + tmp = man->priv->connections; while (tmp) { GVirConnection *conn = tmp->data; if (g_strcmp0(gvir_connection_get_uri(conn), uri) == 0) diff --git a/libvirt-gobject/libvirt-gobject-network-filter.c b/libvirt-gobject/libvirt-gobject-network-filter.c index b3db236..00b1ed2 100644 --- a/libvirt-gobject/libvirt-gobject-network-filter.c +++ b/libvirt-gobject/libvirt-gobject-network-filter.c @@ -182,11 +182,13 @@ G_DEFINE_BOXED_TYPE(GVirNetworkFilterHandle, gvir_network_filter_handle, const gchar *gvir_network_filter_get_name(GVirNetworkFilter *filter) { - GVirNetworkFilterPrivate *priv = filter->priv; const char *name; - if (!(name = virNWFilterGetName(priv->handle))) { - g_warning("Failed to get network_filter name on %p", priv->handle); + g_return_val_if_fail(GVIR_IS_NETWORK_FILTER(filter), NULL); + + if (!(name = virNWFilterGetName(filter->priv->handle))) { + g_warning("Failed to get network_filter name on %p", + filter->priv->handle); return NULL; } @@ -217,9 +219,13 @@ GVirConfigNetworkFilter *gvir_network_filter_get_config guint flags, GError **err) { - GVirNetworkFilterPrivate *priv = filter->priv; + GVirNetworkFilterPrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_NETWORK_FILTER(filter), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = filter->priv; if (!(xml = virNWFilterGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_NETWORK_FILTER_ERROR, 0, diff --git a/libvirt-gobject/libvirt-gobject-network.c b/libvirt-gobject/libvirt-gobject-network.c index 17378ec..9625ece 100644 --- a/libvirt-gobject/libvirt-gobject-network.c +++ b/libvirt-gobject/libvirt-gobject-network.c @@ -180,11 +180,12 @@ G_DEFINE_BOXED_TYPE(GVirNetworkHandle, gvir_network_handle, const gchar *gvir_network_get_name(GVirNetwork *network) { - GVirNetworkPrivate *priv = network->priv; const char *name; - if (!(name = virNetworkGetName(priv->handle))) { - g_warning("Failed to get network name on %p", priv->handle); + g_return_val_if_fail(GVIR_IS_NETWORK(network), NULL); + + if (!(name = virNetworkGetName(network->priv->handle))) { + g_warning("Failed to get network name on %p", network->priv->handle); return NULL; } @@ -212,9 +213,13 @@ GVirConfigNetwork *gvir_network_get_config(GVirNetwork *network, guint flags, GError **err) { - GVirNetworkPrivate *priv = network->priv; + GVirNetworkPrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_NETWORK(network), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = network->priv; if (!(xml = virNetworkGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_NETWORK_ERROR, 0, diff --git a/libvirt-gobject/libvirt-gobject-node-device.c b/libvirt-gobject/libvirt-gobject-node-device.c index 0a4b6a6..eb314ed 100644 --- a/libvirt-gobject/libvirt-gobject-node-device.c +++ b/libvirt-gobject/libvirt-gobject-node-device.c @@ -159,11 +159,13 @@ G_DEFINE_BOXED_TYPE(GVirNodeDeviceHandle, gvir_node_device_handle, const gchar *gvir_node_device_get_name(GVirNodeDevice *device) { - GVirNodeDevicePrivate *priv = device->priv; const char *name; - if (!(name = virNodeDeviceGetName(priv->handle))) { - g_warning("Failed to get node_device name on %p", priv->handle); + g_return_val_if_fail(GVIR_IS_NODE_DEVICE(device), NULL); + + if (!(name = virNodeDeviceGetName(device->priv->handle))) { + g_warning("Failed to get node_device name on %p", + device->priv->handle); return NULL; } @@ -185,9 +187,13 @@ GVirConfigNodeDevice *gvir_node_device_get_config(GVirNodeDevice *device, guint flags, GError **err) { - GVirNodeDevicePrivate *priv = device->priv; + GVirNodeDevicePrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_NODE_DEVICE(device), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = device->priv; if (!(xml = virNodeDeviceGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_NODE_DEVICE_ERROR, 0, diff --git a/libvirt-gobject/libvirt-gobject-secret.c b/libvirt-gobject/libvirt-gobject-secret.c index b0aff13..8bfee88 100644 --- a/libvirt-gobject/libvirt-gobject-secret.c +++ b/libvirt-gobject/libvirt-gobject-secret.c @@ -201,9 +201,13 @@ GVirConfigSecret *gvir_secret_get_config(GVirSecret *secret, guint flags, GError **err) { - GVirSecretPrivate *priv = secret->priv; + GVirSecretPrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_SECRET(secret), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = secret->priv; if (!(xml = virSecretGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_SECRET_ERROR, 0, diff --git a/libvirt-gobject/libvirt-gobject-storage-pool.c b/libvirt-gobject/libvirt-gobject-storage-pool.c index e79c8e5..7f50037 100644 --- a/libvirt-gobject/libvirt-gobject-storage-pool.c +++ b/libvirt-gobject/libvirt-gobject-storage-pool.c @@ -211,11 +211,12 @@ G_DEFINE_BOXED_TYPE(GVirStoragePoolInfo, gvir_storage_pool_info, const gchar *gvir_storage_pool_get_name(GVirStoragePool *pool) { - GVirStoragePoolPrivate *priv = pool->priv; const char *name; - if (!(name = virStoragePoolGetName(priv->handle))) { - g_warning("Failed to get storage_pool name on %p", priv->handle); + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), NULL); + + if (!(name = virStoragePoolGetName(pool->priv->handle))) { + g_warning("Failed to get storage_pool name on %p", pool->priv->handle); return NULL; } @@ -244,9 +245,13 @@ GVirConfigStoragePool *gvir_storage_pool_get_config(GVirStoragePool *pool, guint flags, GError **err) { - GVirStoragePoolPrivate *priv = pool->priv; + GVirStoragePoolPrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = pool->priv; if (!(xml = virStoragePoolGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, 0, @@ -271,10 +276,14 @@ GVirConfigStoragePool *gvir_storage_pool_get_config(GVirStoragePool *pool, GVirStoragePoolInfo *gvir_storage_pool_get_info(GVirStoragePool *pool, GError **err) { - GVirStoragePoolPrivate *priv = pool->priv; + GVirStoragePoolPrivate *priv; virStoragePoolInfo info; GVirStoragePoolInfo *ret; + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = pool->priv; if (virStoragePoolGetInfo(priv->handle, &info) < 0) { if (err) *err = gvir_error_new_literal(GVIR_STORAGE_POOL_ERROR, @@ -346,7 +355,7 @@ gboolean gvir_storage_pool_refresh(GVirStoragePool *pool, GCancellable *cancellable, GError **err) { - GVirStoragePoolPrivate *priv = pool->priv; + GVirStoragePoolPrivate *priv; GHashTable *vol_hash; gchar **volumes = NULL; gint nvolumes = 0; @@ -355,6 +364,12 @@ gboolean gvir_storage_pool_refresh(GVirStoragePool *pool, virStoragePoolPtr vpool = NULL; GError *lerr = NULL; + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), FALSE); + g_return_val_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable), + FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + + priv = pool->priv; vpool = priv->handle; if (virStoragePoolRefresh(vpool, 0) < 0) { @@ -447,6 +462,9 @@ void gvir_storage_pool_refresh_async(GVirStoragePool *pool, { GSimpleAsyncResult *res; + g_return_if_fail(GVIR_IS_STORAGE_POOL(pool)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); + res = g_simple_async_result_new(G_OBJECT(pool), callback, user_data, @@ -495,9 +513,12 @@ static void gvir_storage_vol_ref(gpointer obj, gpointer ignore G_GNUC_UNUSED) */ GList *gvir_storage_pool_get_volumes(GVirStoragePool *pool) { - GVirStoragePoolPrivate *priv = pool->priv; + GVirStoragePoolPrivate *priv; GList *volumes = NULL; + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), NULL); + + priv = pool->priv; g_mutex_lock(priv->lock); if (priv->volumes != NULL) { volumes = g_hash_table_get_values(priv->volumes); @@ -520,9 +541,12 @@ GList *gvir_storage_pool_get_volumes(GVirStoragePool *pool) GVirStorageVol *gvir_storage_pool_get_volume(GVirStoragePool *pool, const gchar *name) { - GVirStoragePoolPrivate *priv = pool->priv; + GVirStoragePoolPrivate *priv; GVirStorageVol *volume; + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), NULL); + + priv = pool->priv; g_mutex_lock(priv->lock); volume = g_hash_table_lookup(priv->volumes, name); if (volume) @@ -548,12 +572,17 @@ GVirStorageVol *gvir_storage_pool_create_volume { const gchar *xml; virStorageVolPtr handle; - GVirStoragePoolPrivate *priv = pool->priv; + GVirStoragePoolPrivate *priv; + + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), NULL); + g_return_val_if_fail(GVIR_CONFIG_IS_STORAGE_VOL(conf), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(conf)); g_return_val_if_fail(xml != NULL, NULL); + priv = pool->priv; if (!(handle = virStorageVolCreateXML(priv->handle, xml, 0))) { gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, 0, @@ -593,6 +622,9 @@ gboolean gvir_storage_pool_build (GVirStoragePool *pool, guint flags, GError **err) { + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + if (virStoragePoolBuild(pool->priv->handle, flags)) { gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, 0, @@ -644,6 +676,9 @@ void gvir_storage_pool_build_async (GVirStoragePool *pool, GSimpleAsyncResult *res; StoragePoolBuildData *data; + g_return_if_fail(GVIR_IS_STORAGE_POOL(pool)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); + data = g_slice_new0(StoragePoolBuildData); data->flags = flags; @@ -675,6 +710,7 @@ gboolean gvir_storage_pool_build_finish(GVirStoragePool *pool, g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(pool), gvir_storage_pool_build_async), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), err)) @@ -695,6 +731,9 @@ gboolean gvir_storage_pool_start (GVirStoragePool *pool, guint flags, GError **err) { + g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + if (virStoragePoolCreate(pool->priv->handle, flags)) { gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, 0, @@ -742,6 +781,9 @@ void gvir_storage_pool_start_async (GVirStoragePool *pool, GSimpleAsyncResult *res; StoragePoolBuildData *data; + g_return_if_fail(GVIR_IS_STORAGE_POOL(pool)); + g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable)); + data = g_slice_new0(StoragePoolBuildData); data->flags = flags; @@ -773,6 +815,7 @@ gboolean gvir_storage_pool_start_finish(GVirStoragePool *pool, g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(pool), gvir_storage_pool_start_async), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), err)) diff --git a/libvirt-gobject/libvirt-gobject-storage-vol.c b/libvirt-gobject/libvirt-gobject-storage-vol.c index 9e59576..6f60fcd 100644 --- a/libvirt-gobject/libvirt-gobject-storage-vol.c +++ b/libvirt-gobject/libvirt-gobject-storage-vol.c @@ -195,11 +195,12 @@ G_DEFINE_BOXED_TYPE(GVirStorageVolInfo, gvir_storage_vol_info, const gchar *gvir_storage_vol_get_name(GVirStorageVol *vol) { - GVirStorageVolPrivate *priv = vol->priv; const char *name; - if (!(name = virStorageVolGetName(priv->handle))) { - g_warning("Failed to get storage_vol name on %p", priv->handle); + g_return_val_if_fail(GVIR_IS_STORAGE_VOL(vol), NULL); + + if (!(name = virStorageVolGetName(vol->priv->handle))) { + g_warning("Failed to get storage_vol name on %p", vol->priv->handle); return NULL; } @@ -208,13 +209,15 @@ const gchar *gvir_storage_vol_get_name(GVirStorageVol *vol) const gchar *gvir_storage_vol_get_path(GVirStorageVol *vol, GError **error) { - GVirStorageVolPrivate *priv = vol->priv; const char *path; - if (!(path = virStorageVolGetPath(priv->handle))) { + g_return_val_if_fail(GVIR_IS_STORAGE_VOL(vol), NULL); + g_return_val_if_fail(error == NULL || *error == NULL, NULL); + + if (!(path = virStorageVolGetPath(vol->priv->handle))) { gvir_set_error(error, GVIR_STORAGE_VOL_ERROR, 0, "Failed to get storage_vol path on %p", - priv->handle); + vol->priv->handle); return NULL; } @@ -234,9 +237,13 @@ GVirConfigStorageVol *gvir_storage_vol_get_config(GVirStorageVol *vol, guint flags, GError **err) { - GVirStorageVolPrivate *priv = vol->priv; + GVirStorageVolPrivate *priv; gchar *xml; + g_return_val_if_fail(GVIR_IS_STORAGE_VOL(vol), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = vol->priv; if (!(xml = virStorageVolGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_STORAGE_VOL_ERROR, 0, @@ -261,10 +268,14 @@ GVirConfigStorageVol *gvir_storage_vol_get_config(GVirStorageVol *vol, GVirStorageVolInfo *gvir_storage_vol_get_info(GVirStorageVol *vol, GError **err) { - GVirStorageVolPrivate *priv = vol->priv; + GVirStorageVolPrivate *priv; virStorageVolInfo info; GVirStorageVolInfo *ret; + g_return_val_if_fail(GVIR_IS_STORAGE_VOL(vol), NULL); + g_return_val_if_fail(err == NULL || *err == NULL, NULL); + + priv = vol->priv; if (virStorageVolGetInfo(priv->handle, &info) < 0) { if (err) *err = gvir_error_new_literal(GVIR_STORAGE_VOL_ERROR, @@ -295,6 +306,9 @@ gboolean gvir_storage_vol_delete(GVirStorageVol *vol, guint flags, GError **err) { + g_return_val_if_fail(GVIR_IS_STORAGE_VOL(vol), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + if (virStorageVolDelete(vol->priv->handle, flags) < 0) { gvir_set_error_literal(err, GVIR_STORAGE_VOL_ERROR, @@ -322,6 +336,9 @@ gboolean gvir_storage_vol_resize(GVirStorageVol *vol, guint flags, GError **err) { + g_return_val_if_fail(GVIR_IS_STORAGE_VOL(vol), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + if (virStorageVolResize(vol->priv->handle, capacity, flags) < 0) { gvir_set_error_literal(err, GVIR_STORAGE_VOL_ERROR, diff --git a/libvirt-gobject/libvirt-gobject-stream.c b/libvirt-gobject/libvirt-gobject-stream.c index 60da4bc..3b98023 100644 --- a/libvirt-gobject/libvirt-gobject-stream.c +++ b/libvirt-gobject/libvirt-gobject-stream.c @@ -379,7 +379,9 @@ gvir_stream_receive_all(GVirStream *self, int r; g_return_val_if_fail(GVIR_IS_STREAM(self), -1); + g_return_val_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable), -1); g_return_val_if_fail(func != NULL, -1); + g_return_val_if_fail(error == NULL || *error == NULL, -1); r = virStreamRecvAll(self->priv->handle, stream_sink, &helper); if (r < 0) { @@ -424,6 +426,8 @@ gssize gvir_stream_send(GVirStream *self, g_return_val_if_fail(GVIR_IS_STREAM(self), -1); g_return_val_if_fail(buffer != NULL, -1); + g_return_val_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable), -1); + g_return_val_if_fail(error == NULL || *error == NULL, -1); if (g_cancellable_set_error_if_cancelled (cancellable, error)) return -1; @@ -491,7 +495,9 @@ gvir_stream_send_all(GVirStream *self, int r; g_return_val_if_fail(GVIR_IS_STREAM(self), -1); + g_return_val_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable), -1); g_return_val_if_fail(func != NULL, -1); + g_return_val_if_fail(error == NULL || *error == NULL, -1); r = virStreamSendAll(self->priv->handle, stream_source, &helper); if (r < 0) { -- 1.7.10.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list