Hi,

I've hit the following assertion in svnmucc:

svnmucc: subversion/libsvn_subr/dirent_uri.c:1373: 
svn_uri_get_longest_ancestor: Assertion `svn_uri_is_canonical(uri1, ((void 
*)0))' failed.
Aborted (core dumped)

The assertion was triggered when svnmucc was supplied with a script file that 
had inconsistent URL specifications (it was cut-and-pasted from two different 
scripts, one of which referred to SVN server by IP and the other by its domain 
name). It can be easily reproduced with the following script, for example (no 
repository setup is needed, as this assertion is triggered even before svnmucc 
contacts the repository):

mkdir
svn://localhost/svn/branches/try
cp
1234
svn://127.0.0.1/svn/trunk/foo
svn://localhost/svn/branches/try/foo

I am not sure if it is a valid use case, but at the very least, the error 
message should probably be me a bit more user-friendly than an assertion. 
Patch erring out gracefully attached.

Regards,
Alexey.
Index: subversion/svnmucc/svnmucc.c
===================================================================
--- subversion/svnmucc/svnmucc.c	(revision 1508998)
+++ subversion/svnmucc/svnmucc.c	(working copy)
@@ -1433,7 +1433,14 @@
           if (! anchor)
             anchor = url;
           else
-            anchor = svn_uri_get_longest_ancestor(anchor, url, pool);
+            {
+              anchor = svn_uri_get_longest_ancestor(anchor, url, pool);
+              if (!anchor[0])
+                handle_error(svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL,
+                                               "URLs in the action list do not "
+                                               "share a common ancestor\n"),
+                             pool);
+            }
 
           if ((++i == action_args->nelts) && (j + 1 < num_url_args))
             insufficient(pool);

Reply via email to