diff options
author | Eric Blake <eblake@redhat.com> | 2011-11-09 17:19:33 -0700 |
---|---|---|
committer | Eric Blake <eblake@redhat.com> | 2011-12-03 15:55:46 -0700 |
commit | 2b045d39df74dd21dbb043f5bb2d97d9299a031e (patch) | |
tree | 74c7ee476fdcd45e7c57f93a5d8e7c838d44665f /tests/commandtest.c | |
parent | build: fix build on Cygwin (diff) | |
download | libvirt-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.c | 13 |
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(); |