Document and check that @props contains a pointer to a json object and
check that both necessary fields are present. Also marm @props as
NONNULL.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_monitor.c | 22 ++++++++++++++++------
src/qemu/qemu_monitor.h | 3 ++-
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 6ed475ede0..c1afe21cc1 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -3073,8 +3073,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.
*
@@ -3085,18 +3086,27 @@ 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, _("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;
}
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index b3d62324b4..e8adda8aa0 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -812,7 +812,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);
--
2.16.2