From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:44474) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UDBti-0001oC-5W for qemu-devel@nongnu.org; Wed, 06 Mar 2013 05:48:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UDBte-0000RO-3T for qemu-devel@nongnu.org; Wed, 06 Mar 2013 05:48:34 -0500 Received: from mx1.redhat.com ([209.132.183.28]:23459) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UDBtd-0000RE-SE for qemu-devel@nongnu.org; Wed, 06 Mar 2013 05:48:30 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r26AmSv9030840 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 6 Mar 2013 05:48:28 -0500 From: Kevin Wolf Date: Wed, 6 Mar 2013 11:48:06 +0100 Message-Id: <1362566886-14073-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH] qemu-sockets: Fix assertion failure List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com inet_connect_opts() tries all possible addrinfos returned by getaddrinfo(). If one fails with an error, the next one is tried. In this case, the Error should be discarded because the whole operation is successful if another addrinfo from the list succeeds; and if it doesn't, setting an already set Error will trigger an assertion failure. Signed-off-by: Kevin Wolf --- util/qemu-sockets.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 1350ccc..32e609a 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -373,6 +373,14 @@ int inet_connect_opts(QemuOpts *opts, Error **errp, } for (e = res; e != NULL; e = e->ai_next) { + + /* Overwriting errors isn't allowed, so clear any error that may have + * occured in the previous iteration */ + if (error_is_set(errp)) { + error_free(*errp); + *errp = NULL; + } + if (connect_state != NULL) { connect_state->current_addr = e; } -- 1.8.1.4