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/06 18:44:29 UTC

svn commit: r1211048 - in /subversion/trunk/subversion: libsvn_wc/externals.c tests/cmdline/externals_tests.py

Author: philip
Date: Tue Dec  6 17:44:29 2011
New Revision: 1211048

URL: http://svn.apache.org/viewvc?rev=1211048&view=rev
Log:
Another attempt to fix issue 4073, assert on Windows for abspath
in svn:externals.

* subversion/libsvn_wc/externals.c
  (svn_wc_parse_externals_description3): Check that the target path can
   be joined and split.

* subversion/tests/cmdline/externals_tests.py
  (disallow_dot_or_dotdot_directory_reference): Add two 4073 test cases.


Modified:
    subversion/trunk/subversion/libsvn_wc/externals.c
    subversion/trunk/subversion/tests/cmdline/externals_tests.py

Modified: subversion/trunk/subversion/libsvn_wc/externals.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/externals.c?rev=1211048&r1=1211047&r2=1211048&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/externals.c (original)
+++ subversion/trunk/subversion/libsvn_wc/externals.c Tue Dec  6 17:44:29 2011
@@ -302,7 +302,11 @@ svn_wc_parse_externals_description3(apr_
 
       if (item->target_dir[0] == '\0'
           || svn_dirent_is_absolute(item->target_dir)
-          || svn_path_is_backpath_present(item->target_dir))
+          || svn_path_is_backpath_present(item->target_dir)
+          || !svn_dirent_skip_ancestor("dummy",
+                                       svn_dirent_join("dummy",
+                                                       item->target_dir,
+                                                       pool)))
         return svn_error_createf
           (SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION, NULL,
            _("Invalid %s property on '%s': "

Modified: subversion/trunk/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/externals_tests.py?rev=1211048&r1=1211047&r2=1211048&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/externals_tests.py Tue Dec  6 17:44:29 2011
@@ -709,6 +709,10 @@ def disallow_dot_or_dotdot_directory_ref
   if svntest.main.is_os_windows():
     externals_value_9 = external_urls.pop() + " D:/foo\n"
     if not external_urls: external_urls = list(external_url_for.values())
+    externals_value_10 = external_urls.pop() + " D:\\foo\n"
+    if not external_urls: external_urls = list(external_url_for.values())
+    externals_value_11 = external_urls.pop() + " D:foo\n"
+    if not external_urls: external_urls = list(external_url_for.values())
 
   set_externals_for_path_expect_error(B_path, externals_value_1)
   set_externals_for_path_expect_error(G_path, externals_value_2)
@@ -720,6 +724,8 @@ def disallow_dot_or_dotdot_directory_ref
   set_externals_for_path_expect_error(H_path, externals_value_8)
   if svntest.main.is_os_windows():
     set_externals_for_path_expect_error(B_path, externals_value_9)
+    set_externals_for_path_expect_error(B_path, externals_value_10)
+    set_externals_for_path_expect_error(B_path, externals_value_11)
 
 
 #----------------------------------------------------------------------