aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Bolte <matthias.bolte@googlemail.com>2011-04-25 00:25:10 +0200
committerMatthias Bolte <matthias.bolte@googlemail.com>2011-04-30 19:59:52 +0200
commit9ba4eb3c081027846637acf20b17ec801dc66b72 (patch)
tree12eaeebaeeb298f17c8f009d1c08c43a590eda27 /tests/qemuxml2xmltest.c
parenttests: Update valgrind suppressions file (diff)
downloadlibvirt-9ba4eb3c081027846637acf20b17ec801dc66b72.tar.gz
libvirt-9ba4eb3c081027846637acf20b17ec801dc66b72.tar.bz2
libvirt-9ba4eb3c081027846637acf20b17ec801dc66b72.zip
tests: Lower stack usage below 4096 bytes
Make virtTestLoadFile allocate the buffer to read the file into. Fix logic error in virtTestLoadFile, stop reading on the first empty line. Use virFileReadLimFD in virtTestCaptureProgramOutput to avoid manual buffer handling.
Diffstat (limited to 'tests/qemuxml2xmltest.c')
-rw-r--r--tests/qemuxml2xmltest.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 6f51d1e06..5bfbcabb2 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -17,21 +17,18 @@
static struct qemud_driver driver;
-# define MAX_FILE 4096
-
-
-static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml) {
- char inXmlData[MAX_FILE];
- char *inXmlPtr = &(inXmlData[0]);
- char outXmlData[MAX_FILE];
- char *outXmlPtr = &(outXmlData[0]);
+static int
+testCompareXMLToXMLFiles(const char *inxml, const char *outxml)
+{
+ char *inXmlData = NULL;
+ char *outXmlData = NULL;
char *actual = NULL;
int ret = -1;
virDomainDefPtr def = NULL;
- if (virtTestLoadFile(inxml, &inXmlPtr, MAX_FILE) < 0)
+ if (virtTestLoadFile(inxml, &inXmlData) < 0)
goto fail;
- if (virtTestLoadFile(outxml, &outXmlPtr, MAX_FILE) < 0)
+ if (virtTestLoadFile(outxml, &outXmlData) < 0)
goto fail;
if (!(def = virDomainDefParseString(driver.caps, inXmlData,
@@ -49,6 +46,8 @@ static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml) {
ret = 0;
fail:
+ free(inXmlData);
+ free(outXmlData);
free(actual);
virDomainDefFree(def);
return ret;
@@ -59,16 +58,19 @@ struct testInfo {
int different;
};
-static int testCompareXMLToXMLHelper(const void *data) {
+static int
+testCompareXMLToXMLHelper(const void *data)
+{
const struct testInfo *info = data;
- char xml_in[PATH_MAX];
- char xml_out[PATH_MAX];
- int ret;
+ char *xml_in = NULL;
+ char *xml_out = NULL;
+ int ret = -1;
- snprintf(xml_in, PATH_MAX, "%s/qemuxml2argvdata/qemuxml2argv-%s.xml",
- abs_srcdir, info->name);
- snprintf(xml_out, PATH_MAX, "%s/qemuxml2xmloutdata/qemuxml2xmlout-%s.xml",
- abs_srcdir, info->name);
+ if (virAsprintf(&xml_in, "%s/qemuxml2argvdata/qemuxml2argv-%s.xml",
+ abs_srcdir, info->name) < 0 ||
+ virAsprintf(&xml_out, "%s/qemuxml2xmloutdata/qemuxml2xmlout-%s.xml",
+ abs_srcdir, info->name) < 0)
+ goto cleanup;
if (info->different) {
ret = testCompareXMLToXMLFiles(xml_in, xml_out);
@@ -76,6 +78,9 @@ static int testCompareXMLToXMLHelper(const void *data) {
ret = testCompareXMLToXMLFiles(xml_in, xml_in);
}
+cleanup:
+ free(xml_in);
+ free(xml_out);
return ret;
}