[Date Prev][Date Next] [Chronological] [Thread] [Top]

Correct fix for freeing prompts->result (ITS#2325)

Full_Name: Stephen Frost
Version: 2.1.12
OS: Debian unstable
URL: http://snowman.net/openldap-fix_cyrus_free.patch
Submission from: (NULL) (

  Attached is the correct fix for the cyrus.c free problem.  The patch          
  reverts the incorrect attempted fixes in 1.70/1.71 and fixes the              
  problem correctly by moving the 'res' int outside the loop so that it         
  can be checked against.  The free should only be done if the interact         
  call (from the prior loop) returns successfully.  The free should not         
  depend on the current value of saslrc since it is reset at the top of         
  the loop by sasl_client_start.                                                
  The problem was caused when prompts was set/allocated by                      
  sasl_client_start but prompts->result was not initialized (It is              
  expected that the application will allocate/deallocate                        
  prompts->result according to SASL documentation).  This meant that            
  libldap attempts to free a pointer which had not been allocated,              
  causing a segfault.