You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2011/01/21 15:43:38 UTC

svn commit: r1061826 - in /subversion/branches/uris-as-urls/subversion: mod_authz_svn/mod_authz_svn.c svnsync/main.c

Author: cmpilato
Date: Fri Jan 21 14:43:37 2011
New Revision: 1061826

URL: http://svn.apache.org/viewvc?rev=1061826&view=rev
Log:
On the 'uris-as-urls' branch, review and correct some use of the
svn_uri_* APIs.  (One step of many similar ones.)

* subversion/mod_authz_svn/mod_authz_svn.c
  (canonicalize_uri): New helper function.
  (create_authz_svn_dir_config, req_check_access): Use
    canonicalize_uri() instead of the svn_uri_* libraries.

* subversion/svnsync/main.c
  (do_initialize): Review, correct (as needed), and rename uses of the
    svn_uri_* API.

Modified:
    subversion/branches/uris-as-urls/subversion/mod_authz_svn/mod_authz_svn.c
    subversion/branches/uris-as-urls/subversion/svnsync/main.c

Modified: subversion/branches/uris-as-urls/subversion/mod_authz_svn/mod_authz_svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/mod_authz_svn/mod_authz_svn.c?rev=1061826&r1=1061825&r2=1061826&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/mod_authz_svn/mod_authz_svn.c (original)
+++ subversion/branches/uris-as-urls/subversion/mod_authz_svn/mod_authz_svn.c Fri Jan 21 14:43:37 2011
@@ -61,6 +61,17 @@ typedef struct authz_svn_config_rec {
  * Configuration
  */
 
+/*
+ * Return a canonicalized version of URI (which is a
+ * schema/hostname-less URI), allocated from POOL.
+ */
+static const char *
+uri_canonicalize(const char *uri, apr_pool_t *pool)
+{
+  return apr_pstrcat(pool, (uri[0] == '/') ? "/" : "",
+                     svn_relpath_canonicalize(uri, pool), NULL);
+}
+               
 /* Implements the #create_dir_config method of Apache's #module vtable. */
 static void *
 create_authz_svn_dir_config(apr_pool_t *p, char *d)
@@ -69,7 +80,7 @@ create_authz_svn_dir_config(apr_pool_t *
   conf->base_path = d;
 
   if (d)
-    conf->base_path = svn_uri_canonicalize(d, p);
+    conf->base_path = uri_canonicalize(d, p);
 
   /* By default keep the fortress secure */
   conf->authoritative = 1;
@@ -275,7 +286,6 @@ req_check_access(request_rec *r,
   svn_authz_t *access_conf = NULL;
   svn_error_t *svn_err;
   char errbuf[256];
-  const char *canonicalized_uri;
   const char *username_to_authorize = get_username_to_authorize(r, conf);
 
   switch (r->method_number)
@@ -315,8 +325,7 @@ req_check_access(request_rec *r,
         break;
     }
 
-  canonicalized_uri = svn_uri_canonicalize(r->uri, r->pool);
-  if (strcmp(canonicalized_uri, conf->base_path) == 0)
+  if (strcmp(uri_canonicalize(r->uri, r->pool), conf->base_path) == 0)
     {
       /* Do no access control when conf->base_path(as configured in <Location>)
        * and given uri are same. The reason for such relaxation of access

Modified: subversion/branches/uris-as-urls/subversion/svnsync/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/svnsync/main.c?rev=1061826&r1=1061825&r2=1061826&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/svnsync/main.c (original)
+++ subversion/branches/uris-as-urls/subversion/svnsync/main.c Fri Jan 21 14:43:37 2011
@@ -738,7 +738,7 @@ do_initialize(svn_ra_session_t *to_sessi
 
   /* If we're doing a partial replay, we have to check first if the server
      supports this. */
-  if (svn_uri_is_child(root_url, baton->from_url, pool))
+  if (svn_url_is_child(root_url, baton->from_url, pool))
     {
       svn_boolean_t server_supports_partial_replay;
       svn_error_t *err = svn_ra_has_capability(from_session,