Author: mikej Date: Mon Jan 28 04:27:01 2008 New Revision: 7404 Modified: freeswitch/trunk/src/include/switch_core.h freeswitch/trunk/src/include/switch_platform.h freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c Log: code analysis for hash functions. Modified: freeswitch/trunk/src/include/switch_core.h ============================================================================== --- freeswitch/trunk/src/include/switch_core.h (original) +++ freeswitch/trunk/src/include/switch_core.h Mon Jan 28 04:27:01 2008 @@ -895,7 +895,7 @@ \return SWITCH_STATUS_SUCCESS if the data is added \note the string key must be a constant or a dynamic string */ -SWITCH_DECLARE(switch_status_t) switch_core_hash_insert_locked(switch_hash_t * hash, const char *key, const void *data, switch_mutex_t *mutex); +SWITCH_DECLARE(switch_status_t) switch_core_hash_insert_locked(_In_ switch_hash_t * hash, _In_z_ const char *key, _In_opt_ const void *data, _In_ switch_mutex_t *mutex); /*! \brief Delete data from a hash based on desired key @@ -903,7 +903,7 @@ \param key the key from which to delete the data \return SWITCH_STATUS_SUCCESS if the data is deleted */ -SWITCH_DECLARE(switch_status_t) switch_core_hash_delete(switch_hash_t * hash, const char *key); +SWITCH_DECLARE(switch_status_t) switch_core_hash_delete(_In_ switch_hash_t * hash, _In_z_ const char *key); /*! \brief Delete data from a hash based on desired key @@ -912,7 +912,7 @@ \param mutex optional mutex to lock \return SWITCH_STATUS_SUCCESS if the data is deleted */ -SWITCH_DECLARE(switch_status_t) switch_core_hash_delete_locked(switch_hash_t * hash, const char *key, switch_mutex_t *mutex); +SWITCH_DECLARE(switch_status_t) switch_core_hash_delete_locked(_In_ switch_hash_t * hash, _In_z_ const char *key, _In_ switch_mutex_t *mutex); /*! \brief Retrieve data from a given hash @@ -920,7 +920,7 @@ \param key the key to retrieve \return a pointer to the data held in the key */ -SWITCH_DECLARE(void *) switch_core_hash_find(switch_hash_t * hash, const char *key); +SWITCH_DECLARE(void *) switch_core_hash_find(_In_ switch_hash_t * hash, _In_z_ const char *key); /*! @@ -930,11 +930,11 @@ \param mutex optional mutex to lock \return a pointer to the data held in the key */ -SWITCH_DECLARE(void *) switch_core_hash_find_locked(switch_hash_t * hash, const char *key, switch_mutex_t *mutex); +SWITCH_DECLARE(void *) switch_core_hash_find_locked(_In_ switch_hash_t * hash, _In_z_ const char *key, _In_ switch_mutex_t *mutex); -SWITCH_DECLARE(switch_hash_index_t *) switch_hash_first(char *depricate_me, switch_hash_t *hash); -SWITCH_DECLARE(switch_hash_index_t *) switch_hash_next(switch_hash_index_t *hi); -SWITCH_DECLARE(void) switch_hash_this(switch_hash_index_t *hi, const void **key, switch_ssize_t *klen, void **val); +SWITCH_DECLARE(switch_hash_index_t *) switch_hash_first(char *depricate_me, _In_ switch_hash_t *hash); +SWITCH_DECLARE(switch_hash_index_t *) switch_hash_next(_In_ switch_hash_index_t *hi); +SWITCH_DECLARE(void) switch_hash_this(_In_ switch_hash_index_t *hi, _Out_opt_ptrdiff_cap_(klen) const void **key, _Out_opt_ switch_ssize_t *klen, _Out_ void **val); ///\} Modified: freeswitch/trunk/src/include/switch_platform.h ============================================================================== --- freeswitch/trunk/src/include/switch_platform.h (original) +++ freeswitch/trunk/src/include/switch_platform.h Mon Jan 28 04:27:01 2008 @@ -319,6 +319,8 @@ #define _Post_z_ #define _Out_cap_(x) #define _Out_z_cap_(x) +#define _Out_ptrdiff_cap_(x) +#define _Out_opt_ptrdiff_cap_(x) #endif Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Mon Jan 28 04:27:01 2008 @@ -3578,7 +3578,7 @@ argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); /* try to find a command to execute */ - if (argc) { + if (argc && argv[0]) { conference_obj_t *conference = NULL; if ((conference = (conference_obj_t *) switch_core_hash_find(globals.conference_hash, argv[0]))) { Modified: freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c (original) +++ freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c Mon Jan 28 04:27:01 2008 @@ -208,7 +208,7 @@ mydata = switch_core_session_strdup(session, data); switch_assert(mydata); - if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 2) { + if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 2 || !argv[0]) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "USAGE %s\n", FIFO_USAGE); return; }