Author: mikej Date: Sat Dec 29 18:15:57 2007 New Revision: 7026 Modified: freeswitch/trunk/Freeswitch.2008.sln freeswitch/trunk/src/include/switch_core.h freeswitch/trunk/src/include/switch_ivr.h freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c freeswitch/trunk/src/switch_core_file.c freeswitch/trunk/src/switch_ivr_play_say.c Log: avoid seg on invalid params to record app.(MODAPP-63) Modified: freeswitch/trunk/Freeswitch.2008.sln ============================================================================== --- freeswitch/trunk/Freeswitch.2008.sln (original) +++ freeswitch/trunk/Freeswitch.2008.sln Sat Dec 29 18:15:57 2007 @@ -115,6 +115,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dialplan", "dialplan", "{C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC}" ProjectSection(SolutionItems) = preProject conf\dialplan\default.xml = conf\dialplan\default.xml + conf\dialplan\public.xml = conf\dialplan\public.xml EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{FC71C66E-E268-4EAD-B1F5-F008DC382E83}" Modified: freeswitch/trunk/src/include/switch_core.h ============================================================================== --- freeswitch/trunk/src/include/switch_core.h (original) +++ freeswitch/trunk/src/include/switch_core.h Sat Dec 29 18:15:57 2007 @@ -1126,7 +1126,7 @@ \note the loadable module used is chosen based on the file extension */ SWITCH_DECLARE(switch_status_t) switch_core_file_open(switch_file_handle_t *fh, - const char *file_path, uint8_t channels, uint32_t rate, unsigned int flags, switch_memory_pool_t *pool); + _In_z_ const char *file_path, uint8_t channels, uint32_t rate, unsigned int flags, switch_memory_pool_t *pool); /*! \brief Read media from a file handle \param fh the file handle to read from (must be initilized by you memset all 0 for read, fill in channels and rate for write) Modified: freeswitch/trunk/src/include/switch_ivr.h ============================================================================== --- freeswitch/trunk/src/include/switch_ivr.h (original) +++ freeswitch/trunk/src/include/switch_ivr.h Sat Dec 29 18:15:57 2007 @@ -298,8 +298,11 @@ \param limit max limit to record for (0 for infinite) \return SWITCH_STATUS_SUCCESS if all is well */ -SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *session, - switch_file_handle_t *fh, char *file, switch_input_args_t *args, uint32_t limit); +SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(_In_ switch_core_session_t *session, + _In_ switch_file_handle_t *fh, + _In_z_ const char *file, + _In_opt_ switch_input_args_t *args, + _In_ uint32_t limit); /*! Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c (original) +++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c Sat Dec 29 18:15:57 2007 @@ -1253,7 +1253,7 @@ int rate; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (data && (mydata = switch_core_session_strdup(session, data))) { argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); Modified: freeswitch/trunk/src/switch_core_file.c ============================================================================== --- freeswitch/trunk/src/switch_core_file.c (original) +++ freeswitch/trunk/src/switch_core_file.c Sat Dec 29 18:15:57 2007 @@ -42,6 +42,11 @@ char stream_name[128] = ""; char *rhs = NULL; + if (switch_strlen_zero(file_path)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Filename\n"); + return SWITCH_STATUS_FALSE; + } + if ((rhs = strstr(file_path, SWITCH_URL_SEPARATOR))) { switch_copy_string(stream_name, file_path, (rhs + 1) - file_path); ext = stream_name; Modified: freeswitch/trunk/src/switch_ivr_play_say.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_play_say.c (original) +++ freeswitch/trunk/src/switch_ivr_play_say.c Sat Dec 29 18:15:57 2007 @@ -335,7 +335,7 @@ } SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *session, - switch_file_handle_t *fh, char *file, switch_input_args_t *args, uint32_t limit) + switch_file_handle_t *fh, const char *file, switch_input_args_t *args, uint32_t limit) { switch_channel_t *channel; switch_dtmf_t dtmf = {0};