You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2011/12/08 13:47:13 UTC

svn commit: r1211859 - in /subversion/trunk/subversion: libsvn_client/delete.c tests/cmdline/basic_tests.py

Author: philip
Date: Thu Dec  8 12:47:13 2011
New Revision: 1211859

URL: http://svn.apache.org/viewvc?rev=1211859&view=rev
Log:
Fix issue 4074, "svn rm root_url" SEGV.

* subversion/libsvn_client/delete.c
  (delete_urls_multi_repos): Ensure we have a valid relpath.

* subversion/tests/cmdline/basic_tests.py
  (basic_delete): Extend with new test case.

Modified:
    subversion/trunk/subversion/libsvn_client/delete.c
    subversion/trunk/subversion/tests/cmdline/basic_tests.py

Modified: subversion/trunk/subversion/libsvn_client/delete.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/delete.c?rev=1211859&r1=1211858&r2=1211859&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/delete.c (original)
+++ subversion/trunk/subversion/libsvn_client/delete.c Thu Dec  8 12:47:13 2011
@@ -272,6 +272,12 @@ delete_urls_multi_repos(const apr_array_
           APR_ARRAY_PUSH(relpaths_list, const char *) = repos_relpath;
         }
 
+      /* Check we identified a non-root relpath.  Return an FS error
+         similar to the one further down. */
+      if (!repos_relpath || !*repos_relpath)
+        return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL,
+                                 "URL '%s' not within a repository root", uri);
+
       /* Now, test to see if the thing actually exists. */
       SVN_ERR(svn_ra_check_path(ra_session, repos_relpath, SVN_INVALID_REVNUM,
                                 &kind, pool));

Modified: subversion/trunk/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/basic_tests.py?rev=1211859&r1=1211858&r2=1211859&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/basic_tests.py Thu Dec  8 12:47:13 2011
@@ -999,6 +999,7 @@ def verify_dir_deleted(path):
 
   return 1
 
+@Issue(687,4074)
 def basic_delete(sbox):
   "basic delete command"
 
@@ -1190,6 +1191,12 @@ def basic_delete(sbox):
                                      'rm', '-m', 'delete iota URL',
                                      iota_URL)
 
+  # Issue 4074, deleting a root url SEGV.
+  expected_error = 'svn: E160013: .*not within a repository root'
+  svntest.actions.run_and_verify_svn(None, [], expected_error,
+                                     'rm', sbox.repo_url,
+                                     '--message', 'delete root')
+
 #----------------------------------------------------------------------
 
 def basic_checkout_deleted(sbox):