From 6d7cdec63df182338032a4998b3ccbf7101cf398 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 11 Jul 2017 14:23:08 +0200 Subject: [PATCH] util: storage: Always deflatten JSON pseudo-protocol objects Now that the JSON deflattener is working sanely we can always attempt the deflattening so that we can then parse the tree as expected. --- src/util/virstoragefile.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index ff78bc968e..6b814a675b 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -3249,24 +3249,22 @@ static int virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src, virJSONValuePtr json) { - virJSONValuePtr fixedroot = NULL; + virJSONValuePtr deflattened = NULL; virJSONValuePtr file; const char *drvname; char *str = NULL; size_t i; int ret = -1; - if (!(file = virJSONValueObjectGetObject(json, "file"))) { - if (!(fixedroot = virJSONValueObjectDeflatten(json))) - goto cleanup; + if (!(deflattened = virJSONValueObjectDeflatten(json))) + goto cleanup; - if (!(file = virJSONValueObjectGetObject(fixedroot, "file"))) { - str = virJSONValueToString(json, false); - virReportError(VIR_ERR_INVALID_ARG, - _("JSON backing volume defintion '%s' lacks 'file' object"), - NULLSTR(str)); - goto cleanup; - } + if (!(file = virJSONValueObjectGetObject(deflattened, "file"))) { + str = virJSONValueToString(json, false); + virReportError(VIR_ERR_INVALID_ARG, + _("JSON backing volume defintion '%s' lacks 'file' object"), + NULLSTR(str)); + goto cleanup; } if (!(drvname = virJSONValueObjectGetString(file, "driver"))) { @@ -3290,7 +3288,7 @@ virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src, cleanup: VIR_FREE(str); - virJSONValueFree(fixedroot); + virJSONValueFree(deflattened); return ret; }