Author: mikej Date: Sat Sep 2 03:31:18 2006 New Revision: 2479 Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c freeswitch/trunk/src/switch_core.c Log: fix crash when passing null string to switch_core_session_locate (via killchan with no param) Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (original) +++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c Sat Sep 2 03:31:18 2006 @@ -117,7 +117,7 @@ return SWITCH_STATUS_FALSE; } - if ((session = switch_core_session_locate(dest))) { + if (dest && (session = switch_core_session_locate(dest))) { switch_channel_t *channel = switch_core_session_get_channel(session); switch_core_session_kill_channel(session, SWITCH_SIG_KILL); switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); Modified: freeswitch/trunk/src/switch_core.c ============================================================================== --- freeswitch/trunk/src/switch_core.c (original) +++ freeswitch/trunk/src/switch_core.c Sat Sep 2 03:31:18 2006 @@ -269,18 +269,22 @@ { switch_core_session_t *session; - switch_mutex_lock(runtime.session_table_mutex); - if ((session = switch_core_hash_find(runtime.session_table, uuid_str))) { - /* Acquire a read lock on the session */ - if (switch_thread_rwlock_tryrdlock(session->rwlock) != SWITCH_STATUS_SUCCESS) { - /* not available, forget it */ - session = NULL; + if (uuid_str) { + switch_mutex_lock(runtime.session_table_mutex); + if ((session = switch_core_hash_find(runtime.session_table, uuid_str))) { + /* Acquire a read lock on the session */ + if (switch_thread_rwlock_tryrdlock(session->rwlock) != SWITCH_STATUS_SUCCESS) { + /* not available, forget it */ + session = NULL; + } } - } - switch_mutex_unlock(runtime.session_table_mutex); + switch_mutex_unlock(runtime.session_table_mutex); - /* if its not NULL, now it's up to you to rwunlock this */ - return session; + /* if its not NULL, now it's up to you to rwunlock this */ + return session; + } else { + return NULL; + } } SWITCH_DECLARE(void) switch_core_session_hupall(void)