You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by gs...@apache.org on 2012/05/12 06:28:29 UTC
svn commit: r1337441 - /subversion/trunk/subversion/libsvn_ra_serf/xml.c
Author: gstein
Date: Sat May 12 04:28:28 2012
New Revision: 1337441
URL: http://svn.apache.org/viewvc?rev=1337441&view=rev
Log:
Fix namespace expansion for unknown prefixes (in particular: avoid a
segfault).
* subversion/libsvn_ra_serf/xml.c:
(svn_ra_serf__expand_ns): an unknown prefix should be assumed as
part of the name, and definitely shouldn't segfault. simplify the
function somewhat, by assigning to the OUT param rather than using
an intermediate localvar.
Modified:
subversion/trunk/subversion/libsvn_ra_serf/xml.c
Modified: subversion/trunk/subversion/libsvn_ra_serf/xml.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/xml.c?rev=1337441&r1=1337440&r2=1337441&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/xml.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/xml.c Sat May 12 04:28:28 2012
@@ -158,37 +158,27 @@ svn_ra_serf__expand_ns(svn_ra_serf__dav_
const char *name)
{
const char *colon;
- svn_ra_serf__dav_props_t prop_name;
colon = strchr(name, ':');
if (colon)
{
const svn_ra_serf__ns_t *ns;
- prop_name.namespace = NULL;
-
for (ns = ns_list; ns; ns = ns->next)
{
if (strncmp(ns->namespace, name, colon - name) == 0)
{
- prop_name.namespace = ns->url;
- break;
+ returned_prop_name->namespace = ns->url;
+ returned_prop_name->name = colon + 1;
+ return;
}
}
-
- SVN_ERR_ASSERT_NO_RETURN(prop_name.namespace);
-
- prop_name.name = colon + 1;
- }
- else
- {
- /* use default namespace for now */
- prop_name.namespace = "";
- prop_name.name = name;
}
- *returned_prop_name = prop_name;
- return;
+ /* If there is no prefix, or if the prefix is not found, then the
+ name is NOT within a namespace. */
+ returned_prop_name->namespace = "";
+ returned_prop_name->name = name;
}