Message ID | 20200323120822.51266-1-dgilbert@redhat.com |
---|---|
State | New |
Headers | show |
Series | hmp/vnc: Fix info vnc list leak | expand |
On Mon, 23 Mar 2020 at 12:08, Dr. David Alan Gilbert (git) <dgilbert@redhat.com> wrote: > > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> > > We're iterating the list, and then freeing the iteration pointer rather > than the list head. > > Fixes: 0a9667ecdb6d ("hmp: Update info vnc") > Reported-by: Coverity (CID 1421932) > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
* Dr. David Alan Gilbert (git) (dgilbert@redhat.com) wrote: > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> > > We're iterating the list, and then freeing the iteration pointer rather > than the list head. > > Fixes: 0a9667ecdb6d ("hmp: Update info vnc") > Reported-by: Coverity (CID 1421932) > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Queued > --- > monitor/hmp-cmds.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c > index a00248527c..1d473e809c 100644 > --- a/monitor/hmp-cmds.c > +++ b/monitor/hmp-cmds.c > @@ -527,10 +527,11 @@ static void hmp_info_vnc_servers(Monitor *mon, VncServerInfo2List *server) > > void hmp_info_vnc(Monitor *mon, const QDict *qdict) > { > - VncInfo2List *info2l; > + VncInfo2List *info2l, *info2l_head; > Error *err = NULL; > > info2l = qmp_query_vnc_servers(&err); > + info2l_head = info2l; > if (err) { > hmp_handle_error(mon, err); > return; > @@ -559,7 +560,7 @@ void hmp_info_vnc(Monitor *mon, const QDict *qdict) > info2l = info2l->next; > } > > - qapi_free_VncInfo2List(info2l); > + qapi_free_VncInfo2List(info2l_head); > > } > #endif > -- > 2.25.1 > > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index a00248527c..1d473e809c 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -527,10 +527,11 @@ static void hmp_info_vnc_servers(Monitor *mon, VncServerInfo2List *server) void hmp_info_vnc(Monitor *mon, const QDict *qdict) { - VncInfo2List *info2l; + VncInfo2List *info2l, *info2l_head; Error *err = NULL; info2l = qmp_query_vnc_servers(&err); + info2l_head = info2l; if (err) { hmp_handle_error(mon, err); return; @@ -559,7 +560,7 @@ void hmp_info_vnc(Monitor *mon, const QDict *qdict) info2l = info2l->next; } - qapi_free_VncInfo2List(info2l); + qapi_free_VncInfo2List(info2l_head); } #endif