diff options
Diffstat (limited to 'tests/conftest.c')
-rw-r--r-- | tests/conftest.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/tests/conftest.c b/tests/conftest.c index a7977bb81..6514f4df5 100644 --- a/tests/conftest.c +++ b/tests/conftest.c @@ -6,32 +6,43 @@ #include <string.h> #include <errno.h> #include "conf.h" +#include "memory.h" -int main(int argc, char **argv) { - int ret; +int main(int argc, char **argv) +{ + int ret, exit_code = EXIT_FAILURE; virConfPtr conf; int len = 10000; - char buffer[10000]; + char *buffer = NULL; if (argc != 2) { fprintf(stderr, "Usage: %s conf_file\n", argv[0]); - exit(EXIT_FAILURE); + goto cleanup; } + if (VIR_ALLOC_N(buffer, len) < 0) { + fprintf(stderr, "out of memory\n"); + goto cleanup; + } conf = virConfReadFile(argv[1], 0); if (conf == NULL) { fprintf(stderr, "Failed to process %s\n", argv[1]); - exit(EXIT_FAILURE); + goto cleanup; } - ret = virConfWriteMem(&buffer[0], &len, conf); + ret = virConfWriteMem(buffer, &len, conf); if (ret < 0) { fprintf(stderr, "Failed to serialize %s back\n", argv[1]); - exit(EXIT_FAILURE); + goto cleanup; } virConfFree(conf); if (fwrite(buffer, 1, len, stdout) != len) { fprintf(stderr, "Write failed: %s\n", strerror (errno)); - exit(EXIT_FAILURE); + goto cleanup; } - exit(EXIT_SUCCESS); + + exit_code = EXIT_SUCCESS; + +cleanup: + VIR_FREE(buffer); + return exit_code; } |