summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2011-11-09 17:19:33 -0700
committerEric Blake <eblake@redhat.com>2011-12-03 15:55:46 -0700
commit2b045d39df74dd21dbb043f5bb2d97d9299a031e (patch)
tree74c7ee476fdcd45e7c57f93a5d8e7c838d44665f /tests/commandtest.c
parentbuild: fix build on Cygwin (diff)
downloadlibvirt-2b045d39df74dd21dbb043f5bb2d97d9299a031e.tar.gz
libvirt-2b045d39df74dd21dbb043f5bb2d97d9299a031e.tar.bz2
libvirt-2b045d39df74dd21dbb043f5bb2d97d9299a031e.zip
command: handle empty buffer argument correctly
virBufferContentAndReset (intentionally) returns NULL for a buffer with no content, but it is feasible to invoke a command with an explicit empty string. * src/util/command.c (virCommandAddEnvBuffer): Reject empty string. (virCommandAddArgBuffer): Allow explicit empty argument. * tests/commandtest.c (test9): Test it. * tests/commanddata/test9.log: Adjust.
Diffstat (limited to 'tests/commandtest.c')
-rw-r--r--tests/commandtest.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/commandtest.c b/tests/commandtest.c
index dd6c24887..efc48fe20 100644
--- a/tests/commandtest.c
+++ b/tests/commandtest.c
@@ -352,11 +352,22 @@ static int test9(const void *unused ATTRIBUTE_UNUSED)
{
virCommandPtr cmd = virCommandNew(abs_builddir "/commandhelper");
const char* const args[] = { "arg1", "arg2", NULL };
+ virBuffer buf = VIR_BUFFER_INITIALIZER;
virCommandAddArg(cmd, "-version");
virCommandAddArgPair(cmd, "-log", "bar.log");
virCommandAddArgSet(cmd, args);
- virCommandAddArgList(cmd, "arg3", "arg4", NULL);
+ virCommandAddArgBuffer(cmd, &buf);
+ virBufferAddLit(&buf, "arg4");
+ virCommandAddArgBuffer(cmd, &buf);
+ virCommandAddArgList(cmd, "arg5", "arg6", NULL);
+
+ if (virBufferUse(&buf)) {
+ printf("Buffer not transferred\n");
+ virBufferFreeAndReset(&buf);
+ virCommandFree(cmd);
+ return -1;
+ }
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();