[prev in list] [next in list] [prev in thread] [next in thread] 

List:       asterisk-dev
Subject:    Re: [asterisk-dev] cdr_odbc.c is broken in trunk
From:       Tilghman Lesher <tilghman () mail ! jeffandtilghman ! com>
Date:       2008-01-10 17:02:55
Message-ID: 200801101102.55832.tilghman () mail ! jeffandtilghman ! com
[Download RAW message or body]

On Thursday 10 January 2008 10:31:13 Kevin P. Fleming wrote:
> Tilghman Lesher wrote:
> > Uh, no, the stack doesn't work that way.  The entire contents of
> > timestr[] remain valid and unchanged until the stack frame is popped. 
> > Which will not happen until odbc_log() exits.  The only reason this
> > location would be overwritten is if there's a stack overflow error (not
> > impossible, but we've been fairly diligent in finding those issues).
>
> This is incorrect. The variable being referred to here ('timestr' in
> prepare_cb) is allocated on the stack when prepare_cb() is entered and
> then that stack frame is released when prepare_cb() exits. Since
> ast_odbc_prepare_and_execute() calls prepare_cb() and then later calls
> SQLExecute(), the memory for this bound parameter will now be used for
> something else (probably the stack frame for SQLExecute() itself).

Aha.  The original problem report suggested that the problem was in 1.4.17,
so I was looking in the 1.4 branch.

-- 
Tilghman

_______________________________________________
--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