mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 11:06:31 +00:00
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:
committed by
Asterisk Development Team
parent
aa1f38a17a
commit
003be5aff0
@@ -3650,8 +3650,10 @@ static int handle_speechrecognize(struct ast_channel *chan, AGI *agi, int argc,
|
||||
time(¤t);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user