Author: stsp
Date: Tue Aug  3 13:35:52 2010
New Revision: 981869

URL: http://svn.apache.org/viewvc?rev=981869&view=rev
Log:
* subversion/libsvn_client/commit.c,
  subversion/svn/import-cmd.c:
  (svn_client_import4, svn_cl__import): Raise an error if the first
   argument to svn import is a URL. Fixes a user-triggerable assertion.

* subversion/tests/cmdline/input_validation_tests.py
  (invalid_import_args, test_list): New test.

Modified:
    subversion/trunk/subversion/libsvn_client/commit.c
    subversion/trunk/subversion/svn/import-cmd.c
    subversion/trunk/subversion/tests/cmdline/input_validation_tests.py

Modified: subversion/trunk/subversion/libsvn_client/commit.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/commit.c?rev=981869&r1=981868&r2=981869&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/commit.c (original)
+++ subversion/trunk/subversion/libsvn_client/commit.c Tue Aug  3 13:35:52 2010
@@ -694,6 +694,11 @@ svn_client_import4(const char *path,
   const char *dir;
   apr_pool_t *subpool;
 
+  if (svn_path_is_url(path))
+    return svn_error_return(svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
+                                              _("'%s' is not a local path"),
+                                              path));
+
   SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
   base_dir_abspath = local_abspath;
 

Modified: subversion/trunk/subversion/svn/import-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/import-cmd.c?rev=981869&r1=981868&r2=981869&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/import-cmd.c (original)
+++ subversion/trunk/subversion/svn/import-cmd.c Tue Aug  3 13:35:52 2010
@@ -100,6 +100,11 @@ svn_cl__import(apr_getopt_t *os,
       url = APR_ARRAY_IDX(targets, 1, const char *);
     }
 
+  if (svn_path_is_url(path))
+    return svn_error_return(svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR,
+                                              NULL,
+                                              _("'%s' is not a local path"),
+                                              path));
   if (! svn_path_is_url(url))
     return svn_error_createf
       (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,

Modified: subversion/trunk/subversion/tests/cmdline/input_validation_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/input_validation_tests.py?rev=981869&r1=981868&r2=981869&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/input_validation_tests.py 
(original)
+++ subversion/trunk/subversion/tests/cmdline/input_validation_tests.py Tue Aug 
 3 13:35:52 2010
@@ -131,6 +131,16 @@ def invalid_export_targets(sbox):
     run_and_verify_svn_in_wc(sbox, "svn:.*is not a local path", 
                              'export', '.', target)
 
+def invalid_import_args(sbox):
+  "invalid arguments for 'import'"
+  sbox.build(read_only=True)
+  run_and_verify_svn_in_wc(sbox, "svn:.*is not a local path",
+                           'import', '^/', '^/')
+  run_and_verify_svn_in_wc(sbox, "svn:.*is not a local path",
+                           'import', '^/', 'iota')
+  run_and_verify_svn_in_wc(sbox, "svn: Invalid URL 'iota'",
+                           'import', 'iota', 'iota')
+
 ########################################################################
 # Run the tests
 
@@ -145,6 +155,7 @@ test_list = [ None,
               invalid_delete_targets,
               invalid_diff_targets,
               invalid_export_targets,
+              invalid_import_args,
              ]
 
 if __name__ == '__main__':


Reply via email to