diff --git a/main/codec.c b/main/codec.c index 7797147a797ae7d0a18fb958980d960ae818e5b0..5b262f6a11504d3559a53a5dbf2581d214d4220b 100644 --- a/main/codec.c +++ b/main/codec.c @@ -406,6 +406,11 @@ unsigned int ast_codec_samples_count(struct ast_frame *frame) if (codec->samples_count) { samples = codec->samples_count(frame); + if ((int) samples < 0) { + ast_log(LOG_WARNING, "Codec %s returned invalid number of samples.\n", + ast_format_get_name(frame->subclass.format)); + samples = 0; + } } else { ast_log(LOG_WARNING, "Unable to calculate samples for codec %s\n", ast_format_get_name(frame->subclass.format));