summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-06-02 21:06:38 +0000
committerLennart Poettering <lennart@poettering.net>2006-06-02 21:06:38 +0000
commit441362a50b8c7e190b98066198555832a95ef064 (patch)
treecb2c49275a3f5ff548acc4578a90fc40e37b0a90 /src
parent8b0e6f6f66a6991ce42aa0ad743ac47dcf1e6f42 (diff)
fix ugly access-after-free bug when doing asyncronous NS lookups
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1004 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src')
-rw-r--r--src/polypcore/socket-client.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/polypcore/socket-client.c b/src/polypcore/socket-client.c
index fd840ab5..efb6de9a 100644
--- a/src/polypcore/socket-client.c
+++ b/src/polypcore/socket-client.c
@@ -376,16 +376,18 @@ static void asyncns_cb(pa_mainloop_api*m, pa_io_event *e, int fd, PA_GCC_UNUSED
asyncns_freeaddrinfo(res);
- goto finish;
-
+ m->io_free(c->asyncns_io_event);
+ c->asyncns_io_event = NULL;
+ return;
+
fail:
+ m->io_free(c->asyncns_io_event);
+ c->asyncns_io_event = NULL;
+
errno = EHOSTUNREACH;
do_call(c);
+ return;
-finish:
-
- m->io_free(c->asyncns_io_event);
- c->asyncns_io_event = NULL;
}
#endif