mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
qemu: monitor: Make qemuMonitorAddObject more robust against programming errors
Document and check that @props contains a pointer to a json object and check that both necessary fields are present. Also mark @props as NONNULL. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
62ef8227e2
commit
fac0dacd54
@ -3088,8 +3088,9 @@ qemuMonitorCreateObjectProps(virJSONValuePtr *propsret,
|
||||
/**
|
||||
* qemuMonitorAddObject:
|
||||
* @mon: Pointer to monitor object
|
||||
* @props: Optional arguments for the given type. The object is consumed and
|
||||
* the pointer is cleared.
|
||||
* @props: Pointer to a JSON object holding configuration of the object to add.
|
||||
* The object must be non-null and contain at least the "qom-type" and
|
||||
* "id" field. The object is consumed and the pointer is cleared.
|
||||
* @alias: If not NULL, returns the alias of the added object if it was added
|
||||
* successfully to qemu. Caller should free the returned pointer.
|
||||
*
|
||||
@ -3100,18 +3101,28 @@ qemuMonitorAddObject(qemuMonitorPtr mon,
|
||||
virJSONValuePtr *props,
|
||||
char **alias)
|
||||
{
|
||||
const char *type = virJSONValueObjectGetString(*props, "qom-type");
|
||||
const char *id = virJSONValueObjectGetString(*props, "id");
|
||||
const char *type = NULL;
|
||||
const char *id = NULL;
|
||||
char *tmp = NULL;
|
||||
int ret = -1;
|
||||
|
||||
if (!*props) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("object props can't be NULL"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
type = virJSONValueObjectGetString(*props, "qom-type");
|
||||
id = virJSONValueObjectGetString(*props, "id");
|
||||
|
||||
VIR_DEBUG("type=%s id=%s", NULLSTR(type), NULLSTR(id));
|
||||
|
||||
QEMU_CHECK_MONITOR_GOTO(mon, cleanup);
|
||||
|
||||
if (!id) {
|
||||
if (!id || !type) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("missing alias for qemu object '%s'"), NULLSTR(type));
|
||||
_("missing alias or qom-type for qemu object '%s'"),
|
||||
NULLSTR(type));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
@ -823,7 +823,8 @@ int qemuMonitorCreateObjectProps(virJSONValuePtr *propsret,
|
||||
|
||||
int qemuMonitorAddObject(qemuMonitorPtr mon,
|
||||
virJSONValuePtr *props,
|
||||
char **alias);
|
||||
char **alias)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
int qemuMonitorDelObject(qemuMonitorPtr mon,
|
||||
const char *objalias);
|
||||
|
Loading…
x
Reference in New Issue
Block a user