breser_at_apache.org writes:
> Author: breser
> Date: Thu Nov 14 03:08:33 2013
> New Revision: 1541793
>
> URL: http://svn.apache.org/r1541793
> Log:
> On 1.8.x-r1541790 branch: Merge r1541790 from trunk.
>
> Modified:
> subversion/branches/1.8.x-r1541790/ (props changed)
> subversion/branches/1.8.x-r1541790/subversion/mod_dav_svn/mod_dav_svn.c
>
> Propchange: subversion/branches/1.8.x-r1541790/
> ------------------------------------------------------------------------------
> Merged /subversion/trunk:r1541790
>
> Modified: subversion/branches/1.8.x-r1541790/subversion/mod_dav_svn/mod_dav_svn.c
> URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1541790/subversion/mod_dav_svn/mod_dav_svn.c?rev=1541793&r1=1541792&r2=1541793&view=diff
> ==============================================================================
> --- subversion/branches/1.8.x-r1541790/subversion/mod_dav_svn/mod_dav_svn.c (original)
> +++ subversion/branches/1.8.x-r1541790/subversion/mod_dav_svn/mod_dav_svn.c Thu Nov 14 03:08:33 2013
> @@ -1101,7 +1101,8 @@ static int dav_svn__handler(request_rec
> * that %f in logging formats will show as "svn:/path/to/repo/path/in/repo". */
> static int dav_svn__translate_name(request_rec *r)
> {
> - const char *fs_path, *repos_basename, *repos_path, *slash;
> + const char *fs_path, *repos_path, *slash;
> + const char *repos_basename = NULL;
> const char *ignore_cleaned_uri, *ignore_relative_path;
> int ignore_had_slash;
> dav_error *err;
> @@ -1112,20 +1113,39 @@ static int dav_svn__translate_name(reque
> return DECLINED;
>
> /* Retrieve path to repo and within repo for the request */
> - if ((err = dav_svn_split_uri(r, r->uri, conf->root_dir, &ignore_cleaned_uri,
> - &ignore_had_slash, &repos_basename,
> - &ignore_relative_path, &repos_path)))
> - {
> - dav_svn__log_err(r, err, APLOG_ERR);
> - return HTTP_INTERNAL_SERVER_ERROR;
> - }
> + err = dav_svn_split_uri(r, r->uri, conf->root_dir, &ignore_cleaned_uri,
> + &ignore_had_slash, &repos_basename,
> + &ignore_relative_path, &repos_path);
> +
> if (conf->fs_parent_path)
> {
> + if (err)
> + {
> + if (!repos_basename)
That looks odd. When dav_svn_split_uri returns an error I suppose it
could have set repos_basename to a valid value but that is not how we
normally handle errors. Do we need to make the assumption that
repos_basename could be valid even when an error is returned? We now
need to document and ensure that dav_svn_split_uri never returns an
invalid value here even when it returns an error.
I think it would be better to remove this test, and the initialization
of repos_basename to NULL, and then always set repos_basename at this
point.
> + {
> + /* detect that there is no repos_basename. We can't error out
> + * here due to this because it would mean that SVNListParentPath
> + * wouldn't work. So set things up to just use the parent path
> + * as our bogus path. */
> + repos_basename = "";
> + repos_path = NULL;
> + }
> + else
> + {
> + dav_svn__log_err(r, err, APLOG_ERR);
> + return err->status;
> + }
> + }
> fs_path = svn_dirent_join(conf->fs_parent_path, repos_basename,
> r->pool);
> }
> else
> {
> + if (err)
> + {
> + dav_svn__log_err(r, err, APLOG_ERR);
> + return err->status;
> + }
> fs_path = conf->fs_path;
> }
>
>
>
--
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*
Received on 2013-11-14 10:32:40 CET