You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.5 KiB
39 lines
1.5 KiB
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
|
From: Christophe Fergeau <cfergeau@redhat.com> |
|
Date: Tue, 25 Jul 2017 17:36:05 +0200 |
|
Subject: [PATCH] resource: Fix ovirt_resource_rest_call_sync() crash on 404 |
|
|
|
When the REST call fails, we do not always get an XML answer from oVirt |
|
describing the failure in more details. In particular, this is the case |
|
when we hit a 404. In such situations, we'd be crashing because we'd |
|
attempt to dereference a NULL pointer. |
|
--- |
|
govirt/ovirt-resource.c | 9 +++++---- |
|
1 file changed, 5 insertions(+), 4 deletions(-) |
|
|
|
diff --git a/govirt/ovirt-resource.c b/govirt/ovirt-resource.c |
|
index 0c750ac..0f4a129 100644 |
|
--- a/govirt/ovirt-resource.c |
|
+++ b/govirt/ovirt-resource.c |
|
@@ -485,16 +485,17 @@ G_GNUC_INTERNAL RestXmlNode *ovirt_resource_rest_call_sync(OvirtRestCall *call, |
|
GError *local_error = NULL; |
|
|
|
root = ovirt_rest_xml_node_from_call(REST_PROXY_CALL(call)); |
|
- ovirt_utils_gerror_from_xml_fault(root, &local_error); |
|
+ if (root != NULL) { |
|
+ ovirt_utils_gerror_from_xml_fault(root, &local_error); |
|
+ rest_xml_node_unref(root); |
|
+ } |
|
if (local_error != NULL) { |
|
g_clear_error(error); |
|
g_warning("Error while updating resource"); |
|
g_warning("message: %s", local_error->message); |
|
g_propagate_error(error, local_error); |
|
} |
|
- if (root != NULL) { |
|
- rest_xml_node_unref(root); |
|
- } |
|
+ g_warn_if_fail(error == NULL || *error != NULL); |
|
|
|
return NULL; |
|
}
|
|
|