On Jul 19, 2005, at 11:24 AM, SteveKing wrote:
> Hi,
>
> Another one spotted by a TSVN user who sent a crashreport:
>
> Subversion crashes when a lock is attempted on a file whose working  
> copy is hosted on a 1.1.x server.
>
> Reproducable every time with my 1.2.1 build of the Subversion CL  
> client on WinXP SP2:
>
> > cd TortoiseSVN   # my working copy of TSVN
> > svn lock build.bat
> now I'm asked three times for authentication. And I'm sure I'm  
> giving the correct username/password every time!
> Then, the crash happens.
Hm, I can't reproduce using /trunk client.  I checked out a copy of  
subclipse from tigris.org (authenticating as user 'sussman'), but I  
get the normal expected error:
$ svn lock index.html
Authentication realm: <http://subclipse.tigris.org:80> CollabNet SCM  
Repository
Password for 'sussman':
Authentication realm: <http://subclipse.tigris.org:80> CollabNet SCM  
Repository
Username: sussman
Password for 'sussman':
Authentication realm: <http://subclipse.tigris.org:80> CollabNet SCM  
Repository
Username: sussman
Password for 'sussman':
subversion/libsvn_ra_dav/util.c:296: (apr_err=175002)
svn: Lock request failed: 401 Authorization Required (http:// 
subclipse.tigris.org)
I can tell you exactly what's happening over in the 1.1 server:  the  
LOCK method is flatly disallowed by apache's authorization modules.   
Every time apache returns  "401 unauthorized", the client simply  
tries to get a new username that *might* be authorized.  (Yes, it's a  
flaw in apache 2.0's design:  authn and authz concepts are blurred  
together;  the server *should* be distiguishing between authn and  
authz errors.)
Ultimately, no matter how many times you authenticate correctly or  
incorrectly, neon gives up.
>
> The crash happens in libsvn_subr/auth.c, line 320:
>
>   /* First, try to save the creds using the provider that produced  
> them. */
>   provider = APR_ARRAY_IDX (state->table->providers,
>                             state->provider_idx,
>                             svn_auth_provider_object_t *);
>   if (provider->vtable->save_credentials)
>
> in the last line, the 'provider' is NULL. So I suggest changing
> -  if (provider->vtable->save_credentials)
> +  if ((provider)&&(provider->vtable->save_credentials))
Why on earth would provider be NULL?  There's something very wrong here.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Jul 20 19:54:57 2005