From: "Dr. David Alan Gilbert" <dgilb...@redhat.com>

Avoid a segfault when visiting, e.g., the QOM rtc-time property,
by implementing the struct callbacks and raising an Error.

Signed-off-by: Andreas Färber <afaer...@suse.de>

Updated for changed interface:
Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com>
---
 qapi/string-output-visitor.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/qapi/string-output-visitor.c b/qapi/string-output-visitor.c
index 94ac821..4e7e97f 100644
--- a/qapi/string-output-visitor.c
+++ b/qapi/string-output-visitor.c
@@ -12,6 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu-common.h"
+#include "qapi/error.h"
 #include "qapi/string-output-visitor.h"
 #include "qapi/visitor-impl.h"
 #include "qemu/host-utils.h"
@@ -266,6 +267,16 @@ static void print_type_number(Visitor *v, const char 
*name, double *obj,
     string_output_set(sov, g_strdup_printf("%f", *obj));
 }
 
+static void start_struct(Visitor *v, const char *name, void **obj, size_t size,
+           Error **errp)
+{
+    error_setg(errp, "struct type not implemented");
+}
+
+static void end_struct(Visitor *v, void **obj)
+{
+}
+
 static void
 start_list(Visitor *v, const char *name, GenericList **list, size_t size,
            Error **errp)
@@ -356,6 +367,8 @@ Visitor *string_output_visitor_new(bool human, char 
**result)
     v->visitor.end_list = end_list;
     v->visitor.complete = string_output_complete;
     v->visitor.free = string_output_free;
+    v->visitor.start_struct = start_struct;
+    v->visitor.end_struct = end_struct;
 
     return &v->visitor;
 }
-- 
2.7.4


Reply via email to