[asterisk-dev] [Code Review] Resolve odbc segfaults by adding shared locks around usage of odbc handle in res_odbc

rmudgett reviewboard at asterisk.org
Tue Feb 14 11:16:36 CST 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1719/#review5501
-----------------------------------------------------------



/branches/1.8/include/asterisk/res_odbc.h
<https://reviewboard.asterisk.org/r/1719/#comment10133>

    Since odbc_obj is an ao2 object, the lock should have been removed and the ao2 object lock should have been used instead.  On trunk this would be a good candidate to convert to using the ao2 rwlock when I ever get around to merging that feature. :)



/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10128>

    obj is never NULL here



/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10129>

    Extraneous blank line



/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10130>

    There is no memory that the wrlock is held on the object.  There are a few cases where the sanity check is already wrlocked from the last time the sanity check was called.  So upgrading from a wrlock to a wrlock is rather pointless.
    
    A wrlock/unlock helper function could be created that sets a wrlock_held flag on the object when the wrlock is obtained and clears the flag when the lock is released.
    
    Using the wrlock_held flag would remove the need for the different ast_odbc_sanity_check calls.



/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10131>

    obj->con should be just con here because we set obj->con to NULL earlier.



/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10132>

    I wonder if con needs to be initialized to NULL for safety or does SQLAllocHandle always set the con value?


- rmudgett


On Feb. 8, 2012, 8:47 a.m., jrose wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1719/
> -----------------------------------------------------------
> 
> (Updated Feb. 8, 2012, 8:47 a.m.)
> 
> 
> Review request for Asterisk Developers, Mark Michelson, Tilghman Lesher, rmudgett, and wdoekes.
> 
> 
> Summary
> -------
> 
> This is a continuation of wdoekes patch seen in https://reviewboard.asterisk.org/r/1622/
> This adds Tilghman Lesher's suggested changes.
> 
> 
> This addresses bug ASTERISK-19011.
>     https://issues.asterisk.org/jira/browse/ASTERISK-19011
> 
> 
> Diffs
> -----
> 
>   /branches/1.8/res/res_odbc.c 354164 
>   /branches/1.8/include/asterisk/res_odbc.h 354164 
> 
> Diff: https://reviewboard.asterisk.org/r/1719/diff
> 
> 
> Testing
> -------
> 
> I started by confirming that the segfault could be easily reproduced with wdoekes' setup mentioned in the issue report.
> After finishing the changes to the patch, I confirmed that following the same steps no longer produced the segfault, undid the patch to double check that I was doing it right, and then decided it was safe to post this review.
> 
> 
> Thanks,
> 
> jrose
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120214/de55ae63/attachment-0001.htm>


More information about the asterisk-dev mailing list