mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-21 22:03:49 +03:00
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…
x
Reference in New Issue
Block a user