[asterisk-bugs] [Asterisk 0010310]: Invalid free of connection	pointer
    noreply at bugs.digium.com 
    noreply at bugs.digium.com
       
    Fri Jul 27 11:46:54 CDT 2007
    
    
  
The following issue has been ASSIGNED. 
====================================================================== 
http://bugs.digium.com/view.php?id=10310 
====================================================================== 
Reported By:                prashant_jois
Assigned To:                file
====================================================================== 
Project:                    Asterisk
Issue ID:                   10310
Category:                   CDR/cdr_pgsql
Reproducibility:            random
Severity:                   crash
Priority:                   normal
Status:                     assigned
Asterisk Version:           1.4.9  
SVN Branch (only for SVN checkouts, not tarball releases): N/A  
SVN Revision (number only!):  
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             07-26-2007 12:14 CDT
Last Modified:              07-27-2007 11:46 CDT
====================================================================== 
Summary:                    Invalid free of connection pointer
Description: 
This may or may not cause a crash, but invalid memory is being accessed on
failure to connect to the PGSQL database.  
Specifically -
lines 88-92:
   pgerror = PQerrorMessage(conn);
   PQfinish(conn);
   ast_log(LOG_ERROR, "cdr_pgsql: Unable to connect to database server %s.
Calls will not be logged!\n", pghostname);
   ast_log(LOG_ERROR, "cdr_pgsql: Reason: %s\n", pgerror);
---------------
PQfinish should come after line 92, because pgerror is a pointer to one of
the fields in conn:
   pgerror = PQerrorMessage(conn);
   ast_log(LOG_ERROR, "cdr_pgsql: Unable to connect to database server %s.
Calls will not be logged!\n", pghostname);
   ast_log(LOG_ERROR, "cdr_pgsql: Reason: %s\n", pgerror);
   PQfinish(conn);
---------------
The same goes for lines 148-152. It should be:
   pgerror = PQerrorMessage(conn);
   ast_log(LOG_ERROR, "cdr_pgsql: Unable to reconnect to database server
%s. Calls will not be logged!\n", pghostname);
   ast_log(LOG_ERROR, "cdr_pgsql: Reason: %s\n", pgerror);
   PQfinish(conn);
======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
related to          0010295 segfault on reload
====================================================================== 
---------------------------------------------------------------------- 
 svnbot - 07-27-07 11:46  
---------------------------------------------------------------------- 
Repository: asterisk
Revision: 77540
------------------------------------------------------------------------
r77540 | file | 2007-07-27 11:46:53 -0500 (Fri, 27 Jul 2007) | 6 lines
(closes issue http://bugs.digium.com/view.php?id=10310)
Reported by: prashant_jois
Patches:
      cdr_pgsql.patch uploaded by prashant (license 114)
Finish the Postgresql connection after the log messages are printed so we
don't access invalid memory.
------------------------------------------------------------------------ 
Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
07-27-07 11:46  svnbot         Checkin                                      
07-27-07 11:46  svnbot         Note Added: 0067984                          
07-27-07 11:46  svnbot         Status                   new => assigned     
07-27-07 11:46  svnbot         Assigned To               => file            
======================================================================
    
    
More information about the asterisk-bugs
mailing list