sebb wrote on Sat, 14 Dec 2019 13:17 +00:00: > On Sat, 14 Dec 2019 at 11:51, Daniel Shahaf <d...@daniel.shahaf.name> wrote: > > sebb wrote on Sat, 14 Dec 2019 09:20 +00:00: > > > The code comment here [1] and the wiki [2] both state that section name > > > matching is case-insensitive. > > > > > > However my reading of the document here [3] says this changed in version > > 1.7. > > > > Thank you for taking the time to point out the specific text within that > > page you had in mind, to save us all looking for it. (It's the first > > "No Entry" box.) > > > > > These docs don't seem consistent to me. > > > > The two documents describe different layers. [1] and [2] describe the > > configuration parsing module (svn_config_*), whereas [3] — says that > > the implementation of authz (≤1.6) did case conversions before or after > > calling svn_config_*(). > > > > However [2] says: >
[2] is not normative. The C API docs are normative. The API errata, release notes, and CVE advisories are all fair game. But the wiki serves as the whiteboard in our virtual office; it isn't API documentation. > "This means that, for example, you cannot have two different sections > named [Section] and [section];" This was true through 1.6.x. In 1.7.x, consumers of the svn_config_* API can decide whether section-names should be case-sensitive or not. See svn_config_read(): [[[ /** Similar to svn_config_read2, but always passes @c FALSE to * @a section_names_case_sensitive. * * @deprecated Provided for backward compatibility with 1.6 API. */ SVN_DEPRECATED svn_error_t * svn_config_read(svn_config_t **cfgp, const char *file, svn_boolean_t must_exist, apr_pool_t *result_pool); ]]] > which to me implies that the following is not allowed: > > [/public] > * = r > > [/PuBliC] > * = > > Whereas according to my reading of [3] that should be allowed. It's allowed, and works: % svnauthz accessof --path /foo =(printf '%s\n' '[/foo]' '*=r' '[/FOO]' '*=' ) r % svnauthz accessof --path /FOO =(printf '%s\n' '[/foo]' '*=r' '[/FOO]' '*=' ) no % In 1.6 it would be case insensitive.