
On 11/29/2011 10:57 PM, ajia@redhat.com wrote:
From: Alex Jia <ajia@redhat.com>
Detected by Coverity. Leak introduced in commit 90074ec.
Signed-off-by: Alex Jia <ajia@redhat.com> --- src/util/virnetdevmacvlan.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c index 12fc411..80a9f80 100644 --- a/src/util/virnetdevmacvlan.c +++ b/src/util/virnetdevmacvlan.c @@ -582,6 +582,7 @@ create_name: virNetDevError(VIR_ERR_INTERNAL_ERROR, _("cannot set bandwidth limits on %s"), cr_ifname); + VIR_FORCE_CLOSE(rc); rc = -1; goto disassociate_exit;
Close, but this botches the case when !withTap (then, rc is 0 and you just nuked stdin). Here's what I'm squashing before pushing (and hopefully Coverity isn't too confused because we overload rc to be either an fd or just 0 depending on withTap): diff --git i/src/util/virnetdevmacvlan.c w/src/util/virnetdevmacvlan.c index 80a9f80..5e55b72 100644 --- i/src/util/virnetdevmacvlan.c +++ w/src/util/virnetdevmacvlan.c @@ -582,8 +582,10 @@ create_name: virNetDevError(VIR_ERR_INTERNAL_ERROR, _("cannot set bandwidth limits on %s"), cr_ifname); - VIR_FORCE_CLOSE(rc); - rc = -1; + if (withTap) + VIR_FORCE_CLOSE(rc); /* sets rc to -1 */ + else + rc = -1; goto disassociate_exit; } -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org