From: Anthony Minessale Date: Wed, 21 Nov 2012 19:06:28 +0000 (-0600) Subject: FS-4860 --resolve This seems to have come from a malformed file_string in the ringbac... X-Git-Tag: v1.3.6~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf32d24b5df7aefaa4818427f7adb9a42bb0c841;p=thirdparty%2Ffreeswitch.git FS-4860 --resolve This seems to have come from a malformed file_string in the ringback var --- diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index eefd4aad4b..d672e2a3db 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -4476,8 +4476,13 @@ static switch_status_t next_file(switch_file_handle_t *handle) } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error finding the folder path section in '%s'\n", path); } + } + if (switch_file_exists(file, handle->memory_pool) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "File [%s] does not exist.\n", file); + goto top; } + if (switch_core_file_open(&context->fh, file, handle->channels, handle->samplerate, handle->flags, NULL) != SWITCH_STATUS_SUCCESS) { goto top; } diff --git a/src/switch_core_file.c b/src/switch_core_file.c index b1a1effc85..baec6f5184 100644 --- a/src/switch_core_file.c +++ b/src/switch_core_file.c @@ -76,6 +76,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_file_open(const char *file, switch_set_flag(fh, SWITCH_FILE_FLAG_FREE_POOL); } + if (switch_directory_exists(file_path, fh->memory_pool) == SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "File [%s] is a directory not a file.\n", file_path); + goto fail; + } if ((rhs = strstr(file_path, SWITCH_URL_SEPARATOR))) { switch_copy_string(stream_name, file_path, (rhs + 1) - file_path); @@ -198,6 +202,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_file_open(const char *file, fail: + switch_clear_flag(fh, SWITCH_FILE_OPEN); + if (switch_test_flag(fh, SWITCH_FILE_FLAG_FREE_POOL)) { switch_core_destroy_memory_pool(&fh->memory_pool); }