Log Message: |
Fix issue #4361 (user/group names in authz files are case-insensitive).
Because of the way the original svn_config structure was designed to be
case-preserving but case-insensitive, when using it to parse authz
and group definition files, we had the following problems:
* User- and group names that differed only in case could not be
represented in the authorization configuration.
* The results returned from authorization queries depended,
although predictably, on the order in which the authz entries
appeared in the authz file.
In 1.7.0, we added an option to svn_config to make configuration groups
(hence, repository paths in the authz config) case-sensitive. This change
does the same for option names, which map to group and user names.
* subversion/include/svn_config.h
(svn_config_create2): New, revised from svn_config_create, with additional
flag to treat option names as case-sensitive.
(svn_config_read3): New, revised from svn_config_read2, with same
additional flag as above.
(svn_config_parse): Add flag to treat option names as case-sensitive.
(svn_config_create): Deprecated.
(svn_config_read2): Deprecated; argument "pool" renamde to "result_pool".
(svn_config_read): Argument "pool" renamde to "result_pool".
* subversion/libsvn_subr/config_impl.h (struct svn_config_t): Add new
struct member option_names_case_sensitive.
* subversion/libsvn_subr/config.c: Replace the newly deprecated
svn_config APIs with their revised versions.
(svn_config_create2): Renamed from
svn_config_create and implementation updated to the new spec.
(svn_config_read3): Renamed from svn_config_read; then same as above.
(svn_config_merge): Make sure both sides of the merged config
have the same case-(in)sensitive behaviour.
(svn_config_create_option): Added case-sensitive flag.
* subversion/libsvn_subr/deprecated.c
(svn_config_create, svn_config_read2): Implement deprecated wrappers.
* subversion/libsvn_repos/authz.c
(authz_retrieve_config_repo, authz_retrieve_config,
svn_repos__authz_read, svn_repos_authz_parse): Parse authz and groups config
files with case-sensitive user and group names.
* subversion/libsvn_repos/hooks.c (svn_repos__parse_hooks_env):
Likewise for the hooks environment file.
* subversion/libsvn_fs_fs/fs_fs.c,
subversion/svnserve/serve.c,
subversion/svnserve/svnserve.c,
subversion/tests/libsvn_subr/cache-test.c,
tools/server-side/mod_dontdothat/mod_dontdothat.c: Replace the newly
deprecated svn_config APIs with their revised versions.
No functional changes were made.
|