res_agi.c: Prevent possible double free during SPEECH RECOGNIZE

When using the speech recognition module, crashes can occur
sporadically due to a "double free or corruption (out)" error. Now, in
the section where the audio stream is being captured in a loop, each
time after releasing fr, it is set to NULL to prevent repeated
deallocation.

Fixes #772

(cherry picked from commit e1da2fec42)
This commit is contained in:
jiangxc
2024-07-17 17:02:33 +08:00
committed by Asterisk Development Team
parent aa1f38a17a
commit 003be5aff0

View File

@@ -3650,8 +3650,10 @@ static int handle_speechrecognize(struct ast_channel *chan, AGI *agi, int argc,
time(&current);
if ((current - start) >= timeout) {
reason = "timeout";
if (fr)
if (fr) {
ast_frfree(fr);
fr = NULL;
}
break;
}
}
@@ -3708,6 +3710,7 @@ static int handle_speechrecognize(struct ast_channel *chan, AGI *agi, int argc,
reason = "hangup";
}
ast_frfree(fr);
fr = NULL;
}
}