[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: crash when locking a file (client 1.2.1, repository 1.1.x)

From: Ben Collins-Sussman <sussman_at_collab.net>
Date: 2005-07-20 19:54:13 CEST

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

This is an archived mail posted to the Subversion Dev mailing list.