Hi Daniel,
Thank you for the comments... :)
On Friday 04 February 2011 08:12 AM, Daniel Shahaf wrote:
> Prabhu Gnana Sundar wrote on Thu, Feb 03, 2011 at 16:53:54 +0530:
>> Hi all,
>>
>> Currently, as per the issue 3781, "checkout" reads the authz file in
>> *case insensitive* way, whereas "commit" reads the authz file in *case
>> sensitive* way.
>>
>> Here is what is observed:
>> 1. Checkout is *case insensitive* about the repository name section and
>> also the path-inside-repo section.
>> 2. Commit is *case sensitive* about the repository name section *but
>> case insensitive* about the path-inside-repo section.
>>
>> Attached an XFail testcase and the log message with this mail. Please
>> share your views.
>>
>>
> You didn't actually say what the intended behaviour is.
>
The intended behaviour is path based authorization should be case
sensitive for all cases.
But it shows some inconsistencies currently...
It has been discussed in ,
http://mail-archives.apache.org/mod_mbox/subversion-dev/201101.mbox/%3C4D468561.3070807@collab.net%3E
>> Index: subversion/tests/cmdline/authz_tests.py
>> ===================================================================
>> --- subversion/tests/cmdline/authz_tests.py (revision 1066732)
>> +++ subversion/tests/cmdline/authz_tests.py (working copy)
>> @@ -1061,6 +1061,67 @@
>> [], 'ls', '-R',
>> sbox.repo_url)
>>
>> +
>> +def case_insensitive_authz(sbox):
>> + "authz issue #3781, check case insensitiveness"
>> +
>> + sbox.build()
>> +
>> + # test the case-insensitivity of the path inside the repo
>> + write_authz_file(sbox, {"/": "jrandom = r", "/A": "jrandom = r", "/a/Mu": "jrandom = rw"})
>> +
>> + write_restrictive_svnserve_conf(sbox.repo_dir)
>> +
>> + wc_dir = sbox.wc_dir
>> +
>> + mu_path = os.path.join(wc_dir, 'A', 'mu')
>> + mu_url = sbox.repo_url + '/A/mu'
>> + svntest.main.file_append(mu_path, "hi")
>> +
>> + # Create expected output tree.
>> + expected_output = svntest.wc.State(wc_dir, {
>> + 'A/mu' : Item(verb='Sending'),
>> + })
>> +
>> + # Commit the file.
>> + svntest.actions.run_and_verify_commit(wc_dir,
>> + expected_output,
>> + None,
>> + None,
>> + mu_path)
> Hold on. Why does this work? You commit /A/mu and the authz file gives
> you only 'r' access to /A!
>
It works because we have set 'rw' for the /a/Mu file.
And this must fail actually, because of the case-change in the path.
Tweaked the test-case.
>> + mixed_case_repo_dir = mixcases(os.path.basename(sbox.repo_dir))
>> +
>> + # test the case-insensitivity of the repo name
>> + write_authz_file(sbox, {}, sections = {mixed_case_repo_dir + ":/": "jrandom = r",
>> + mixed_case_repo_dir + ":/A": "jrandom = r",
>> + mixed_case_repo_dir + ":/A/mu": "jrandom = rw"})
>> +
> Just for clarity, could you add sections for the correct-case repository
> name to the authz file?
>
Sure :) added for clarity...
>> + svntest.main.file_append(mu_path, "hi")
>> + # Commit the file again.
>> + svntest.actions.run_and_verify_commit(wc_dir,
>> + expected_output,
>> + None,
>> + None,
>> + mu_path)
>> + svntest.actions.run_and_verify_svn2('No error',
>> + svntest.verify.AnyOutput, [],
>> + 0, 'cat', mu_url)
> Could you have here both a commit that fails and a commit that succeeds?
Added :)
I have attached the tweaked correct patch and the log message with this
mail. Please share your views.
Thanks and regards
Prabhu
Received on 2011-02-04 08:35:01 CET