Merge the reporting of the missing source host data into the parser functions so that callers don't have to do it separately. --- src/util/virstoragefile.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index c7632808e..c0aa4e4c6 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -2798,8 +2798,18 @@ static int virStorageSourceParseBackingJSONInetSocketAddress(virStorageNetHostDefPtr host, virJSONValuePtr json) { - const char *hostname = virJSONValueObjectGetString(json, "host"); - const char *port = virJSONValueObjectGetString(json, "port"); + const char *hostname; + const char *port; + + if (!json) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("missing remote server specification in JSON " + "backing volume definition")); + return -1; + } + + hostname = virJSONValueObjectGetString(json, "host"); + port = virJSONValueObjectGetString(json, "port"); if (!hostname) { virReportError(VIR_ERR_INVALID_ARG, "%s", @@ -2822,10 +2832,19 @@ static int virStorageSourceParseBackingJSONSocketAddress(virStorageNetHostDefPtr host, virJSONValuePtr json) { - const char *type = virJSONValueObjectGetString(json, "type"); - const char *socket = virJSONValueObjectGetString(json, "socket"); + const char *type; + const char *socket; int transport; + if (!json) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("missing remote server specification in JSON " + "backing volume definition")); + return -1; + } + + type = virJSONValueObjectGetString(json, "type"); + if ((transport = virStorageNetHostTransportTypeFromString(type)) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("unknown backing store transport protocol '%s'"), type); @@ -2839,14 +2858,13 @@ virStorageSourceParseBackingJSONSocketAddress(virStorageNetHostDefPtr host, return virStorageSourceParseBackingJSONInetSocketAddress(host, json); case VIR_STORAGE_NET_HOST_TRANS_UNIX: - if (!socket) { + if (!(socket = virJSONValueObjectGetString(json, "socket"))) { virReportError(VIR_ERR_INVALID_ARG, "%s", _("missing socket path for udp backing server in " "JSON backing volume definition")); return -1; } - if (VIR_STRDUP(host->socket, socket) < 0) return -1; break; -- 2.12.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list