qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 05/10] qapi: allow freeing partially-allocated o


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 05/10] qapi: allow freeing partially-allocated objects
Date: Thu, 22 Mar 2012 15:18:48 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2

On 03/22/2012 06:51 AM, Paolo Bonzini wrote:
Objects going through the dealloc visitor can be only partially allocated.
Detect the situation and avoid a segfault.  This also helps with the
input visitor, when there are errors.

Signed-off-by: Paolo Bonzini<address@hidden>

Reviewed-by: Anthony Liguori <address@hidden>

Regards,

Anthony Liguori

---
  scripts/qapi-visit.py |    7 +++++++
  1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index b242315..a85fb76 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -65,6 +65,9 @@ void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const 
char *name, Error **
          return;
      }
      visit_start_struct(m, (void **)obj, "%(name)s", name, sizeof(%(name)s), 
errp);
+    if (obj&&  !*obj) {
+        goto end;
+    }
  ''',
                  name=name)
      push_indent()
@@ -72,6 +75,7 @@ void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const 
char *name, Error **
      pop_indent()

      ret += mcgen('''
+end:
      visit_end_struct(m, errp);
  }
  ''')
@@ -122,6 +126,9 @@ void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const 
char *name, Error **
          return;
      }
      visit_start_struct(m, (void **)obj, "%(name)s", name, 
sizeof(%(name)s),&err);
+    if (obj&&  !*obj) {
+        goto end;
+    }
      visit_type_%(name)sKind(m,&(*obj)->kind, "type",&err);
      if (err) {
          error_propagate(errp, err);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]