From e02908880259c2587c7ec42d5ab5d967a7daa0a1 Mon Sep 17 00:00:00 2001 From: Jincheng Miao Date: Thu, 25 Sep 2014 19:28:33 +0800 Subject: [PATCH] conf: report error in virCPUDefParseXML When detected invalid 'memAccess', virCPUDefParseXML should report error. Resolves https://bugzilla.redhat.com/show_bug.cgi?id=1146334 Signed-off-by: Jincheng Miao --- src/conf/cpu_conf.c | 10 +++-- ...muxml2argv-hugepages-memaccess-invalid.xml | 45 +++++++++++++++++++ tests/qemuxml2argvtest.c | 1 + 3 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hugepages-memaccess-invalid.xml diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index 116aa58e3f..9b7fbb080b 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -507,17 +507,19 @@ virCPUDefParseXML(xmlNodePtr node, memAccessStr = virXMLPropString(nodes[i], "memAccess"); if (memAccessStr) { - def->cells[cur_cell].memAccess = - virMemAccessTypeFromString(memAccessStr); + int rc = virMemAccessTypeFromString(memAccessStr); - if (def->cells[cur_cell].memAccess <= 0) { + if (rc <= 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Invalid 'memAccess' attribute " "value '%s'"), memAccessStr); VIR_FREE(memAccessStr); - goto cleanup; + goto error; } + + def->cells[cur_cell].memAccess = rc; + VIR_FREE(memAccessStr); } } diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hugepages-memaccess-invalid.xml b/tests/qemuxml2argvdata/qemuxml2argv-hugepages-memaccess-invalid.xml new file mode 100644 index 0000000000..83b8ac235f --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-hugepages-memaccess-invalid.xml @@ -0,0 +1,45 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 4194304 + 4194304 + + + + + + + 4 + + + + + + hvm + + + + + + + + + + + + destroy + restart + destroy + + /usr/bin/qemu + + + +
+ + + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 4c85bfe547..b380fd86cf 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -691,6 +691,7 @@ mymain(void) QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-shared", QEMU_CAPS_MEM_PATH, QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST_PARSE_ERROR("hugepages-memaccess-invalid", NONE); DO_TEST_FAILURE("hugepages-pages4", QEMU_CAPS_MEM_PATH, QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-pages5", QEMU_CAPS_MEM_PATH);