Well, I seem to be in my usual bug-trigging form. :-)
The find_option() function i libsvn_subr/config.c segfaults if it gets
a NULL cfg parameter. This is bad, since it is used from
svn_config_enumerate(), which is used from svn_config_find_group(),
which is supposed to handle a NULL cfg parameter. At least, that's
what libsvn_ra_dav/session.c thinks. In case svn_config_find_group()
is _supposed_ to segfault on a NULL cfg, I have an alternative patch
that fixes libsvn_ra_dav/session.c instead. It is not necessary to
apply both.
---8<--- patch variant 1: Let svn_config_find_group (and
svn_config_enumerate and find_option) accept a NULL cfg ---8<---
Index: subversion/libsvn_subr/config.c
===================================================================
--- subversion/libsvn_subr/config.c (revision 5152)
+++ subversion/libsvn_subr/config.c (working copy)
@@ -349,12 +349,17 @@
{
void *sec_ptr;
- /* Canonicalize the hash key */
- svn_stringbuf_set (cfg->tmp_key, section);
- make_hash_key (cfg->tmp_key->data);
+ if (cfg) {
+ /* Canonicalize the hash key */
+ svn_stringbuf_set (cfg->tmp_key, section);
+ make_hash_key (cfg->tmp_key->data);
- sec_ptr = apr_hash_get (cfg->sections, cfg->tmp_key->data,
- cfg->tmp_key->len);
+ sec_ptr = apr_hash_get (cfg->sections, cfg->tmp_key->data,
+ cfg->tmp_key->len);
+ }
+ else
+ sec_ptr = NULL;
+
if (sectionp != NULL)
*sectionp = sec_ptr;
---8<--- patch variant 2: make get_server_settings not assume that
svn_config_find_group can handle NULL ---8<---
Index: subversion/libsvn_ra_dav/session.c
===================================================================
--- subversion/libsvn_ra_dav/session.c (revision 5152)
+++ subversion/libsvn_ra_dav/session.c (working copy)
@@ -176,8 +176,12 @@
SVN_CONFIG_OPTION_NEON_DEBUG_MASK, NULL);
}
- server_group = svn_config_find_group(cfg, requested_host,
- SVN_CONFIG_SECTION_GROUPS,
pool);
+ if (cfg)
+ server_group = svn_config_find_group(cfg, requested_host,
+ SVN_CONFIG_SECTION_GROUPS,
pool);
+ else
+ server_group = NULL;
+
if (server_group)
{
svn_config_get(cfg, proxy_host, server_group,
---8<---
// Marcus
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Feb 28 16:26:42 2003