Author: stsp Date: Tue Mar 20 13:37:55 2012 New Revision: 1302885 URL: http://svn.apache.org/viewvc?rev=1302885&view=rev Log: On the 1.6.x branch, merge r1166555 and r1166678 from trunk.
* r1166555, r1166678 Fix a crash in ra_svn SASL authentication. Justification: See http://svn.haxx.se/dev/archive-2011-09/0182.shtml Votes: +1: stsp, philip, rhuijben Modified: subversion/branches/1.6.x/ (props changed) subversion/branches/1.6.x/STATUS subversion/branches/1.6.x/subversion/libsvn_ra_svn/cyrus_auth.c Propchange: subversion/branches/1.6.x/ ------------------------------------------------------------------------------ Merged /subversion/trunk:r1166555,1166678 Modified: subversion/branches/1.6.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=1302885&r1=1302884&r2=1302885&view=diff ============================================================================== --- subversion/branches/1.6.x/STATUS (original) +++ subversion/branches/1.6.x/STATUS Tue Mar 20 13:37:55 2012 @@ -234,13 +234,6 @@ Approved changes: Votes: +1: julianfoad, stsp, rhuijben - * r1166555, r1166678 - Fix a crash in ra_svn SASL authentication. - Justification: - See http://svn.haxx.se/dev/archive-2011-09/0182.shtml - Votes: - +1: stsp, philip, rhuijben - * r1230212 Fix for large files on 32-bit systems. Justification: Modified: subversion/branches/1.6.x/subversion/libsvn_ra_svn/cyrus_auth.c URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_ra_svn/cyrus_auth.c?rev=1302885&r1=1302884&r2=1302885&view=diff ============================================================================== --- subversion/branches/1.6.x/subversion/libsvn_ra_svn/cyrus_auth.c (original) +++ subversion/branches/1.6.x/subversion/libsvn_ra_svn/cyrus_auth.c Tue Mar 20 13:37:55 2012 @@ -730,9 +730,7 @@ svn_ra_svn__do_cyrus_auth(svn_ra_svn__se const char *mechstring = "", *last_err = "", *realmstring; const char *local_addrport = NULL, *remote_addrport = NULL; svn_boolean_t success; - /* Reserve space for 3 callbacks (for the username, password and the - array terminator). */ - sasl_callback_t callbacks[3]; + sasl_callback_t *callbacks; cred_baton_t cred_baton; int i; @@ -768,6 +766,13 @@ svn_ra_svn__do_cyrus_auth(svn_ra_svn__se cred_baton.realmstring = realmstring; cred_baton.pool = pool; + /* Reserve space for 3 callbacks (for the username, password and the + array terminator). These structures must persist until the + disposal of the SASL context at pool cleanup, however the + callback functions will not be invoked outside this function so + other structures can have a shorter lifetime. */ + callbacks = apr_palloc(sess->conn->pool, sizeof(*callbacks) * 3); + /* Initialize the callbacks array. */ /* The username callback. */