audiohook.c: Fix freeing a frame and still using it.
authorRichard Mudgett <rmudgett@digium.com>
Wed, 15 Nov 2017 00:00:55 +0000 (18:00 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 15 Nov 2017 22:07:07 +0000 (17:07 -0500)
commitb7b800b689655fcf9339f08e3d8e388a6d4c154d
tree443ee4d367d46242466039bdd48e105da56d29d0
parentaa65be95c08915819b542462b04216981dc69d1a
audiohook.c: Fix freeing a frame and still using it.

Memory corruption happened to the media frame caches when an audio hook
freed a frame when it shouldn't.  I think the freed frame was because a
jitter buffer interpolated a missing frame and the audio hook
unconditionally freed it.

* Made audiohook.c:audio_audiohook_write_list() not free an interpolated
frame if it is the same frame as what was passed into the routine.

* Made plc.c:normalise_history() use memmove() instead of memcpy() on a
memory block that could overlap.  Found by valgrind investigating this
issue.

ASTERISK-27238
ASTERISK-27412

Change-Id: I548d86894281fc4529aefeb9f161f2131ecc6fde
main/audiohook.c
main/plc.c