mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
codec.c: Defensively check the returned samples.
Earlier versions of the codec_opus samples_count callback can return negative error values on undecodable frames. This resulted in a divide by zero exception. * Added a defensive check in ast_codec_samples_count() for a "negative" samples count return value. Log the event and set the count to zero. ASTERISK-27194 Change-Id: Icf69350307ecbbc80a3d74de46af9bd80ea17819
This commit is contained in:
@@ -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));
|
||||
|
Reference in New Issue
Block a user