summaryrefslogtreecommitdiffstats
path: root/unix/tclUnixSock.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2011-07-12 19:10:13 (GMT)
committerdgp <dgp@users.sourceforge.net>2011-07-12 19:10:13 (GMT)
commitcbf4b01ed1234fd56732e9522afb972e7e9b4884 (patch)
treebc98d7128affe90b9088ae52c8517d5a065591c6 /unix/tclUnixSock.c
parentc28e95c3117ace9541a6f476fa44e560176c3c7a (diff)
downloadtcl-cbf4b01ed1234fd56732e9522afb972e7e9b4884.zip
tcl-cbf4b01ed1234fd56732e9522afb972e7e9b4884.tar.gz
tcl-cbf4b01ed1234fd56732e9522afb972e7e9b4884.tar.bz2
3364777 Stop segfault caused by reading from struct after it had been freed.
Diffstat (limited to 'unix/tclUnixSock.c')
-rw-r--r--unix/tclUnixSock.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c
index 52b089c..f302b70 100644
--- a/unix/tclUnixSock.c
+++ b/unix/tclUnixSock.c
@@ -544,8 +544,11 @@ TcpCloseProc(
}
}
- for (fds = statePtr->fds.next; fds != NULL; fds = fds->next) {
+ fds = statePtr->fds.next;
+ while (fds != NULL) {
+ TcpFdList *next = fds->next;
ckfree(fds);
+ fds = next;
}
if (statePtr->addrlist != NULL) {
freeaddrinfo(statePtr->addrlist);