mirror of https://gitee.com/openkylin/libvirt.git
util: require command args to be non-NULL
The virCommand APIs do not expect to be given a NULL value for an arg name or value. Such a mistake can lead to execution of the wrong command, as the NULL may prematurely terminate the list of args. Detect this and report suitable error messages. This identified a flaw in the storage test which was passing a NULL instead of the volume path. This flaw was then validated by an incorrect set of qemu-img args as expected data. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
f8f525ff86
commit
912c6b22fc
|
@ -1498,6 +1498,12 @@ virCommandAddArg(virCommandPtr cmd, const char *val)
|
|||
if (!cmd || cmd->has_error)
|
||||
return;
|
||||
|
||||
if (val == NULL) {
|
||||
cmd->has_error = EINVAL;
|
||||
abort();
|
||||
return;
|
||||
}
|
||||
|
||||
if (VIR_STRDUP_QUIET(arg, val) < 0) {
|
||||
cmd->has_error = ENOMEM;
|
||||
return;
|
||||
|
@ -1595,6 +1601,10 @@ virCommandAddArgFormat(virCommandPtr cmd, const char *format, ...)
|
|||
void
|
||||
virCommandAddArgPair(virCommandPtr cmd, const char *name, const char *val)
|
||||
{
|
||||
if (name == NULL || val == NULL) {
|
||||
cmd->has_error = EINVAL;
|
||||
return;
|
||||
}
|
||||
virCommandAddArgFormat(cmd, "%s=%s", name, val);
|
||||
}
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
qemu-img create -f qcow2 -o compat=0.10 0K
|
||||
qemu-img create -f qcow2 -o compat=0.10 /var/lib/libvirt/images/OtherDemo.img 0K
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<volume>
|
||||
<name>OtherDemo.img</name>
|
||||
<target>
|
||||
<path>/var/lib/libvirt/images/OtherDemo.img</path>
|
||||
<format type="qcow2"/>
|
||||
</target>
|
||||
<capacity>0</capacity>
|
||||
|
|
Loading…
Reference in New Issue