Hi,

I experienced a segfault when trying to resolve a conflict while updating:
Conflict discovered in 'somefile'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: l
Process '/path/to/shell-script/merge-cmd' failed (exitwhy 6)

Further debugging revealed that a child process of svn segfaults and that this 
happens because of misuse of apr_pool_cleanup_register. That function does not 
accept null helpers. I've grepped the svn repo and the kwallet auth code is 
the only place where this error occurs.

Please see the attached patch, it was based on r1421011 and tested by applying 
it on top of 1.7.7.

Regards,
Peter
Index: subversion/libsvn_auth_kwallet/kwallet.cpp
===================================================================
--- subversion/libsvn_auth_kwallet/kwallet.cpp	(revision 1421011)
+++ subversion/libsvn_auth_kwallet/kwallet.cpp	(working copy)
@@ -253,7 +253,7 @@ kwallet_password_get(svn_boolean_t *done,
         }
     }
 
-  apr_pool_cleanup_register(pool, parameters, kwallet_terminate, NULL);
+  apr_pool_cleanup_register(pool, parameters, kwallet_terminate, apr_pool_cleanup_null);
 
   return SVN_NO_ERROR;
 }
@@ -327,7 +327,7 @@ kwallet_password_set(svn_boolean_t *done,
         }
     }
 
-  apr_pool_cleanup_register(pool, parameters, kwallet_terminate, NULL);
+  apr_pool_cleanup_register(pool, parameters, kwallet_terminate, apr_pool_cleanup_null);
 
   return SVN_NO_ERROR;
 }

Reply via email to