[asterisk-dev] cdr_odbc.c is broken in trunk
Kevin P. Fleming
kpfleming at digium.com
Thu Jan 10 10:31:13 CST 2008
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).
--
Kevin P. Fleming
Director of Software Technologies
Digium, Inc. - "The Genuine Asterisk Experience" (TM)
More information about the asterisk-dev
mailing list