From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:55791) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SAoS1-0008Ao-NO for qemu-devel@nongnu.org; Thu, 22 Mar 2012 16:17:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SAoRz-0000hX-Qn for qemu-devel@nongnu.org; Thu, 22 Mar 2012 16:17:37 -0400 Received: from mail-gx0-f173.google.com ([209.85.161.173]:41641) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SAoRz-0000hO-MP for qemu-devel@nongnu.org; Thu, 22 Mar 2012 16:17:35 -0400 Received: by ggnj2 with SMTP id j2so2587798ggn.4 for ; Thu, 22 Mar 2012 13:17:34 -0700 (PDT) Message-ID: <4F6B88DA.5020204@codemonkey.ws> Date: Thu, 22 Mar 2012 15:17:30 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1332417072-20329-1-git-send-email-pbonzini@redhat.com> <1332417072-20329-4-git-send-email-pbonzini@redhat.com> In-Reply-To: <1332417072-20329-4-git-send-email-pbonzini@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 03/10] qapi: fix memory leak on error List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: anthony@codemonkey.vs, lcapitulino@redhat.com, eblake@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com On 03/22/2012 06:51 AM, Paolo Bonzini wrote: > QmpInputVisitor would leak the malloced struct if the stack was > overflowed. This can be easily fixed using error_propagate. > > Signed-off-by: Paolo Bonzini Reviewed-by: Anthony Liguori Regards, Anthony Liguori > --- > qapi/qmp-input-visitor.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c > index b4013cc..ef9288f 100644 > --- a/qapi/qmp-input-visitor.c > +++ b/qapi/qmp-input-visitor.c > @@ -86,6 +86,7 @@ static void qmp_input_start_struct(Visitor *v, void **obj, const char *kind, > { > QmpInputVisitor *qiv = to_qiv(v); > const QObject *qobj = qmp_input_get_object(qiv, name); > + Error *err = NULL; > > if (!qobj || qobject_type(qobj) != QTYPE_QDICT) { > error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null", > @@ -93,8 +94,9 @@ static void qmp_input_start_struct(Visitor *v, void **obj, const char *kind, > return; > } > > - qmp_input_push(qiv, qobj, errp); > - if (error_is_set(errp)) { > + qmp_input_push(qiv, qobj,&err); > + if (err) { > + error_propagate(errp, err); > return; > } >