Remove the ability of svn_repos_authz_read2() to handle repos-relative URLs.
This cleans up a case where it was impossible to canonicalize the paths being passed into it and also ends up removing the need to pass repos_root into it. If callers want to support repos-relative URLs then they should resolve them into absolute file URLs and canonicalize them prior to calling svn_repos_authz_read2().
* subversion/include/svn_repos.h (svn_repos_authz_read2): Remove repos_root argument and adjust documentation to account for no longer accepting repos-root URLs. Also change "a file" in the documented formats for path to a dirent to be more precise.
* subversion/libsvn_repos/authz.c (authz_retrieve_config_repo, svn_repos__authz_read, svn_repos_authz_read2): Remove repos_root parameter and support for repos-relative URLs in path.
* subversion/libsvn_repos/deprecated.c (svn_repos_authz_read): Adjust call of svn_repos__authz_read().
* subversion/libsvn_repos/repos.h (svn_repos_authz_read): Adjust declaration and documentation to match the removal of repos_root and support for repos-relative URLs.
* subversion/mod_authz_svn/mod_authz_svn.c (canonicalize_access_file): Adjust comment about why we are not canonicalizing here. (get_access_conf): When access_file is a repos-relative URL resolve and canonicalize it before calling svn_repos_authz_read2().
* subversion/svnserve/serve.c (canonicalize_access_file): Change access_file to an arginout and return an svn_error_t so that we can resolve and canonicalize repos-relative urls. (load_authz_config): Adjust calls to canonicalize_access_file() due to above changes.
* subversion/tests/libsvn_repos/repos-test.c (in_repo_authz, in_repo_groups_authz): Remove repos-relative URL tests and convert still needed tests that were using repos-relative URls to absolute URLs.
* tools/server-side/svnauthz.c (get_authz): Fix call to svn_repos_authz_read2() to match above changes.
Reject paths containing control characters at the repos layer.
Newly added paths are checked by the repos commit editor, and rejected if they contain control characters.
Related to issue #4340.
* subversion/libsvn_repos/commit.c (illegal_path_escape): New, copied from libsvn_subr/path.c. Going forward, we could make this function public in libsvn_subr. But a static copy in this file will make backports easier for now. (check_cntrl): New, based on svn_path_check_valid(). (add_file_or_directory): Reject paths which contain control characters.
* subversion/tests/libsvn_repos/repos-test.c (filename_with_control_chars): New test. (test_funcs): Add new test.