Philip Martin wrote:
> When you said that the reason you had not upgraded was because
>
> my client runs on BeOS, and the configure support there is not
> working "out of the box"
>
> I assumed you meant that you had trouble building Subversion because
> ./configure did not work. However, given your answer above I deduce
> that you didn't mean that, but rather that you have a run-time
> problem
> with ~/.subversion/.
It's both. I said this in response to people telling me "you should
upgrade your svn client as well", and since I didn't know that was
necessary, I didn't do that because of it needing manual tweaking to
get to build. I later found out that at the point where the build
failed (in libsvn_client-1.a, with a bunch of undefined references),
the svn commandline client had already been built. For some reason,
this is now a 6.4M binary (!) so I definitely will need to look at
what's getting included there. Anyhow, I got a svn which worked, apart
from the crash I mentioned.
> > I've debugged things a bit and found out that the problem starts in
> > get_creds() in providers.c - what it does there is
> >
> > config_dir = apr_hash_get (parameters,
> > SVN_AUTH_PARAM_CONFIG_DIR,
> > APR_HASH_KEY_STRING);
> >
> > (at around line 82). The problem is that this returns null on my
> > system.
>
> That's valid.
>
> > SVN_AUTH_PARAM_CONFIG_DIR is "svn:auth:config-dir", and
> > parameters seems like a valid pointer.
> >
> > Next, this null pointer is passed into svn_config_read_auth_data
> > with
> > cred_kind == svn.simple and realmstring == <http://pc1.stoks.nl:80>
> >
> > Subversion repository.
> >
> > svn_config_read_auth_data does a path_join() which dereferences the
> > null pointer and crashes.
>
> 1. There is no call to svn_path_join in svn_config_read_auth_data.
No; it calls auth_file_path() which calls svn_path_join(). Sorry for
the confusion.
> 2. It is valid to pass a NULL config_dir to
> svn_config_read_auth_data,
> so it should not cause a crash.
>
> > Simply putting an if(config_dir) around the call to
> > svn_config_read_auth_data() solved the problem for me, but I'm
> > probably
> > treating symptoms here...
>
> It's the wrong thing to do.
I found that out: It now wants me to enter my password for anything I
do :-)
> Does BeOS support the APR functions apr_uid_current,
> apr_uid_name_get,
> apr_uid_homepath_get? If it doesn't then
> svn_config__user_config_path
> will return a NULL path. The function auth_file_path in
> config_auth.c
> doesn't handle the NULL (it also leaks any error returned by
> svn_config__user_config_path).
>
> The auth stuff appears to assume that the users config area will
> always be available, which conflicts with the documentation for
> svn_config__user_config_path which says that it may return NULL.
This is indeed what happens. I put in some more debugging printf()s
and indeed the svn_config__user_config_path() in
config_auth.c::auth_file_path() makes authdir_path NULL. I will look
at the BeOS APR port - it's probably the cause of the problems.
Thanks for the suggestions. I'll get back with the results from my APR
endeavours.
Regards,
Sander
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Wed Sep 17 20:47:54 2003