diff options
| author | Garrett D'Amore <garrett@damore.org> | 2016-12-31 14:51:59 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2016-12-31 14:51:59 -0800 |
| commit | d8ffb0b277e7f5d5edc17585543ee78921efc077 (patch) | |
| tree | cbda6c0b04da33d028f0b234bc8f536cbe74cea8 /src/core | |
| parent | c1e9b7ed8dec2e9aab6a00966e0f173a39795814 (diff) | |
| download | nng-d8ffb0b277e7f5d5edc17585543ee78921efc077.tar.gz nng-d8ffb0b277e7f5d5edc17585543ee78921efc077.tar.bz2 nng-d8ffb0b277e7f5d5edc17585543ee78921efc077.zip | |
More use after free.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/endpt.c | 6 | ||||
| -rw-r--r-- | src/core/socket.c | 7 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/core/endpt.c b/src/core/endpt.c index d077122d..67d17cea 100644 --- a/src/core/endpt.c +++ b/src/core/endpt.c @@ -55,6 +55,11 @@ nni_endpt_create(nni_endpt **epp, nni_socket *sock, const char *addr) nni_free(ep, sizeof (*ep)); return (rv); } + + nni_mutex_enter(&sock->s_mx); + nni_list_append(&sock->s_eps, ep); + nni_mutex_exit(&sock->s_mx); + *epp = ep; return (0); } @@ -78,6 +83,7 @@ nni_endpt_close(nni_endpt *ep) ep->ep_pipe = NULL; } nni_cond_broadcast(&ep->ep_cv); + nni_list_remove(&ep->ep_sock->s_eps, ep); nni_mutex_exit(mx); if (ep->ep_dialer != NULL) { diff --git a/src/core/socket.c b/src/core/socket.c index 1cba29c2..0cbd49d6 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -169,7 +169,6 @@ nni_socket_close(nni_socket *sock) // Stop all EPS. We're going to do this first, since we know // we're closing. while ((ep = nni_list_first(&sock->s_eps)) != NULL) { - nni_list_remove(&sock->s_eps, ep); nni_mutex_exit(&sock->s_mx); nni_endpt_close(ep); nni_mutex_enter(&sock->s_mx); @@ -342,9 +341,6 @@ nni_socket_dial(nni_socket *sock, const char *addr, nni_endpt **epp, int flags) if (epp != NULL) { *epp = ep; } - nni_mutex_enter(&sock->s_mx); - nni_list_append(&sock->s_eps, ep); - nni_mutex_exit(&sock->s_mx); } return (rv); } @@ -367,9 +363,6 @@ nni_socket_listen(nni_socket *sock, const char *addr, nni_endpt **epp, if (epp != NULL) { *epp = ep; } - nni_mutex_enter(&sock->s_mx); - nni_list_append(&sock->s_eps, ep); - nni_mutex_exit(&sock->s_mx); } return (rv); } |
