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
22
jiangxc 9 months ago
parent 2618a4f1e5
commit f6d1dfd999

@ -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;
}
}

Loading…
Cancel
Save