diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-01-13 12:04:01 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-01-13 12:04:01 -0600 |
commit | 37910672a48dbac1288ddb677935c2d8f24bbaa8 (patch) | |
tree | fea45ff9dd50dc8eec44bddacb6b5c041bf6b23a /nuttx/net/uip/uip_callback.c | |
parent | 45e0b49b1a2808c4ce4c289fbbc8ee284b293917 (diff) | |
download | nuttx-37910672a48dbac1288ddb677935c2d8f24bbaa8.tar.gz nuttx-37910672a48dbac1288ddb677935c2d8f24bbaa8.tar.bz2 nuttx-37910672a48dbac1288ddb677935c2d8f24bbaa8.zip |
NET: prevent tcp_connect callback from being double freed. From Max Holtzberg.
Diffstat (limited to 'nuttx/net/uip/uip_callback.c')
-rw-r--r-- | nuttx/net/uip/uip_callback.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/nuttx/net/uip/uip_callback.c b/nuttx/net/uip/uip_callback.c index 0c8c3aaa0..e945c5b1a 100644 --- a/nuttx/net/uip/uip_callback.c +++ b/nuttx/net/uip/uip_callback.c @@ -161,9 +161,22 @@ void uip_callbackfree(FAR struct uip_callback_s *cb, FAR struct uip_callback_s * if (cb) { + save = uip_lock(); + +#ifdef CONFIG_DEBUG + /* Check for double freed callbacks */ + + curr = g_cbfreelist; + + while (curr != NULL) + { + DEBUGASSERT(cb != curr); + curr = curr->flink; + } +#endif + /* Find the callback structure in the connection's list */ - save = uip_lock(); if (list) { for (prev = NULL, curr = *list; |