Revision
15413
Author
anthm
Date
2009-11-10 17:50:58 -0600 (Tue, 10 Nov 2009)

Log Message

prevent obscure divide by zero code path

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c (15412 => 15413)


--- freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c	2009-11-10 23:21:09 UTC (rev 15412)
+++ freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c	2009-11-10 23:50:58 UTC (rev 15413)
@@ -1158,7 +1158,7 @@
 			got_file = 1;
 		}
 
-		if (limit && (*message_len = fh.samples_out / fh.samplerate) < profile->min_record_len) {
+		if (limit && (*message_len = fh.samples_out / fh.samplerate ? fh.samplerate : 8000) < profile->min_record_len) {
 			if (unlink(file_path) != 0) {
 				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Failed to delete file [%s]\n", file_path);
 			}

Modified: freeswitch/trunk/src/switch_core_file.c (15412 => 15413)


--- freeswitch/trunk/src/switch_core_file.c	2009-11-10 23:21:09 UTC (rev 15412)
+++ freeswitch/trunk/src/switch_core_file.c	2009-11-10 23:50:58 UTC (rev 15413)
@@ -52,6 +52,12 @@
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Handle already open\n");
 		return SWITCH_STATUS_FALSE;
 	}
+	
+	if (!fh->samplerate) {
+		if (!(fh->samplerate = rate)) {
+			fh->samplerate = 8000;
+		}
+	}
 
 	if (zstr(file_path)) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Filename\n");
@@ -135,12 +141,6 @@
 		fh->handler = switch_core_strdup(fh->memory_pool, rhs);
 	}
 
-	if (!fh->samplerate) {
-		if (!(fh->samplerate = rate)) {
-			fh->samplerate = 8000;
-		}
-	}
-
 	if (channels) {
 		fh->channels = channels;
 	} else {