subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From julianf...@apache.org
Subject svn commit: r958571 - in /subversion/trunk/subversion: libsvn_subr/dirent_uri.c tests/libsvn_subr/dirent_uri-test.c
Date Mon, 28 Jun 2010 13:27:46 GMT
Author: julianfoad
Date: Mon Jun 28 13:27:46 2010
New Revision: 958571

URL: http://svn.apache.org/viewvc?rev=958571&view=rev
Log:
Fix a file:// URL decoding bug.

* subversion/libsvn_subr/dirent_uri.c
  (svn_uri_get_dirent_from_file_url): Don't treat any host name beginning
    with "localhost" as the local host, only if it is that string exactly.

* subversion/tests/libsvn_subr/dirent_uri-test.c
  (test_dirent_from_file_url_errors): New test, to catch some bad file:///
    URLs including the above case.
  (test_funcs): Add the new test.

Modified:
    subversion/trunk/subversion/libsvn_subr/dirent_uri.c
    subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c

Modified: subversion/trunk/subversion/libsvn_subr/dirent_uri.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/dirent_uri.c?rev=958571&r1=958570&r2=958571&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/dirent_uri.c (original)
+++ subversion/trunk/subversion/libsvn_subr/dirent_uri.c Mon Jun 28 13:27:46 2010
@@ -2314,7 +2314,7 @@ svn_uri_get_dirent_from_file_url(const c
         {
           hostname = svn_path_uri_decode(apr_pstrmemdup(pool, hostname,
                                                         path - hostname), pool);
-          if (strncmp(hostname, "localhost", 9) == 0)
+          if (strcmp(hostname, "localhost") == 0)
             hostname = NULL;
         }
       else

Modified: subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c?rev=958571&r1=958570&r2=958571&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c Mon Jun 28 13:27:46 2010
@@ -2714,6 +2714,38 @@ test_dirent_from_file_url(apr_pool_t *po
 
   return SVN_NO_ERROR;
 }
+
+static svn_error_t *
+test_dirent_from_file_url_errors(apr_pool_t *pool)
+{
+  const char *bad_file_urls[] = {
+    /* error if scheme is not "file" */
+    "http://localhost/dir",
+    "file+ssh://localhost/dir",
+#ifndef SVN_USE_DOS_PATHS
+    "file://localhostwrongname/dir",  /* error if host name not "localhost" */
+#endif
+  };
+  int i;
+
+  for (i = 0; i < COUNT_OF(bad_file_urls); i++)
+    {
+      const char *result;
+      svn_error_t *err;
+
+      err = svn_uri_get_dirent_from_file_url(&result, bad_file_urls[i],
+                                             pool);
+
+      if (err == NULL)
+        return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+                                 "svn_relpath_internal_style(\"%s\") did "
+                                 "not return an error",
+                                 bad_file_urls[i]);
+      svn_error_clear(err);
+    }
+
+  return SVN_NO_ERROR;
+}
 
 /* The test table.  */
 
@@ -2808,5 +2840,7 @@ struct svn_test_descriptor_t test_funcs[
                    "test svn_relpath_internal_style"),
     SVN_TEST_PASS2(test_dirent_from_file_url,
                    "test svn_uri_get_dirent_from_file_url"),
+    SVN_TEST_PASS2(test_dirent_from_file_url_errors,
+                   "test svn_uri_get_dirent_from_file_url errors"),
     SVN_TEST_NULL
   };



Mime
View raw message