You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Vlad Georgescu <vg...@gmail.com> on 2006/10/30 19:24:51 UTC

[PATCH] Fix SASL + svnsync + pre-revprop-change problems

On 9/26/06, Garrett Rooney <ro...@electricjellyfish.net> wrote:
> So, I've been trying to figure out why the svnsync tests fail over
> ra_svn when you turn on the server side sasl support.  Here's what
> I've come up with so far:
>
> 1) svnsync tests work fine over ra_svn without sasl
>
> 2) with sasl and forking enabled we get errors like this:
>
> ['subversion/libsvn_repos/hooks.c:111: (apr_err=165001)\n', "svnsync:
> Failed to start
> '/home/rooneg/code/svn-trunk/subversion/tests/cmdline/svn-test-work/repositories/svnsync_tests-1-1/hooks/pre-revprop-change'
> hook\n", 'subversion/libsvn_subr/utf.c:621: (apr_err=22)\n', 'svnsync:
> Valid UTF-8 data\n', '(hex: 48 6b 0f 08 41 41 41 41 40)\n', 'followed
> by invalid UTF-8 sequence\n', '(hex: 9b 0f 08 a1)\n']
>
> 3) turn off forking and that particular symptom goes away
>
> 4) running svnserve under valgrind with either forking or threading
> and sasl enabled results in dozens of errors, basically every time we
> do anything with the connection pool it complains:
>
> ==5067== Invalid read of size 1
> ==5067==    at 0x401E3AB: memcpy (mac_replace_strmem.c:394)
> ==5067==    by 0x415F5DF: apr_pstrdup (apr_strings.c:79)
> ==5067==    by 0x8054421: svn_repos_get_commit_editor4 (commit.c:818)
> ==5067==    by 0x804F17C: commit (serve.c:962)
> ==5067==    by 0x80A5299: svn_ra_svn_handle_commands (marshal.c:838)
> ==5067==    by 0x805299B: serve (serve.c:2305)
> ==5067==    by 0x804C237: serve_thread (main.c:253)
> ==5067==    by 0x4169991: dummy_worker (thread.c:105)
> ==5067==    by 0x41E6340: start_thread (in
> /lib/tls/i686/cmov/libpthread-2.3.6.so)

Hi Garrett,

The following patch should fix these problems.

[[[
Fix a memory access problem with svnsync over ra_svn when SASL is enabled.

* subversion/svnserve/sasl_auth.c
  (sasl_auth_request): Allocate b->user in b->pool rather than pool.
]]]

Index: subversion/svnserve/sasl_auth.c
===================================================================
--- subversion/svnserve/sasl_auth.c     (revision 22157)
+++ subversion/svnserve/sasl_auth.c     (working copy)
@@ -329,7 +329,7 @@

       if ((p = strchr(user, '@')) != NULL)
         /* Drop the realm part. */
-        b->user = apr_pstrndup(pool, user, p - (char *)user);
+        b->user = apr_pstrndup(b->pool, user, p - (char *)user);
       else
         {
           svn_error_t *err;


-- 
Vlad

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] Fix SASL + svnsync + pre-revprop-change problems

Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On 10/30/06, Vlad Georgescu <vg...@gmail.com> wrote:

> The following patch should fix these problems.

Nice!  Committed in r22161.  Thanks for tracking this down!

-garrett

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org