[prev in list] [next in list] [prev in thread] [next in thread]
List: asterisk-dev
Subject: Re: [asterisk-dev] [Code Review] Crash in audiohook_write_list
From: "David Vossel" <dvossel () digium ! com>
Date: 2010-04-29 14:11:35
Message-ID: 20100429141135.11187.25919 () hotblack ! digium ! internal
[Download RAW message or body]
> On 2010-04-28 18:24:40, Tilghman Lesher wrote:
> > I'm fine with the code, but I think there needs to be a paragraph in here, \
> > possibly with a set of truth tables, to show why each part of the logic is \
> > correct.
I'm not sure if I'll go as far as truth tables, but I agree that a paragraph \
explaining this function in more detail is a good idea. I'll do this before \
committing it. Thanks for the review!
- David
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/623/#review1930
-----------------------------------------------------------
On 2010-04-28 11:43:26, David Vossel wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/623/
> -----------------------------------------------------------
>
> (Updated 2010-04-28 11:43:26)
>
>
> Review request for Asterisk Developers and Tilghman Lesher.
>
>
> Summary
> -------
>
> In audio_audiohook_write_list(), middle_frame represents the translated SLINEAR \
> version of the input frame (that is if the input frame was not already SLINEAR to \
> begin with, If that is the case, middle_frame is the input frame)
> The crash that is occurring is caused by r224856 in trunk which frees the \
> middle_frame if an audiohook manipulation callback fails. This is not good for \
> several reasons.
> 1. middle_frame could be equal to the input frame, in that case whatever we are \
> returning in this function is a pointer to freed memory 2. there may be additional \
> audiohook manipulators in the list that could process the data, an audiohook \
> manipulation callback failure can be as simple as the manipulator not caring about \
> altering the data for that direction (example func_speex which was was altered to \
> do that very thing in the same revision), that shouldn't prevent other manipulators \
> in the list from doing their thing. 3. middle_frame is set to end_frame before \
> manipulation if chan_spy is used. This means it is possible for middle_frame to be \
> freed while end_frame still points to the freed data which is later returned at the \
> end of the function. This could be avoided, but would add even additional \
> complication to an already exceedingly complex function for no apparent benefit.
>
> This revision was added to fix something, but I can't figure out what it is. I'm \
> suggesting we revert the audiohook.c part of it.
>
> This addresses bug 17052.
> https://issues.asterisk.org/view.php?id=17052
>
>
> Diffs
> -----
>
> /trunk/include/asterisk/audiohook.h 259663
> /trunk/main/audiohook.c 259663
>
> Diff: https://reviewboard.asterisk.org/r/623/diff
>
>
> Testing
> -------
>
> chanspy can now work with other audiohook manipulators.
>
>
> Thanks,
>
> David
>
>
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic