[ 
https://issues.apache.org/jira/browse/SVN-2060?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Zhakov updated SVN-2060:
-----------------------------
    Fix Version/s:     (was: 1.1.x)
                   1.1.1

> svn ls returns parent folder in some cases
> ------------------------------------------
>
>                 Key: SVN-2060
>                 URL: https://issues.apache.org/jira/browse/SVN-2060
>             Project: Subversion
>          Issue Type: Bug
>          Components: libsvn_ra_neon
>    Affects Versions: 1.1.x
>            Reporter: Stefan Küng
>            Assignee: Subversion Importer
>            Priority: Critical
>             Fix For: 1.1.1
>
>
> {noformat:nopanel=true}
> As Karl Fogel asked me to do, I'm filing this as an issue here.
> Mentioned on the mailing list here:
> http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=78359
> Because I got a bug report for TSVN which I tried to fix I found that this is 
> a
> bug in the Subversion library. So I'm reporting this here:
> If a directory contains "special" chars like öäü in it, 'svn ls' returns not
> only the contents of that directory, but the directory itself too.
> Example:
> http://localhost/svn/test/testparent/öäüÄÖÜ
> http://localhost/svn/test/testparent/öäüÄÖÜ/file1.txt
> now:
> svn ls http://localhost/svn/test/testparent
> returns
> öäüÄÖÜ
> as expected. But an
> svn ls http://localhost/svn/test/testparent/öäüÄÖÜ
> returns
> öäüÄÖÜ/
> file1.txt
> I also tried this with the 1.0.6 client, and there the the öäüÄÖÜ Folder in 
> the
> second 'svn ls' isn't returned.
> (both tests against an RC3 Subversion server, running Apache 2.0.50)
> Don't know where and when this changed, but it should at least be consistend,
> i.e. either always return the requested folder or never.
> The answer to that from Philip Martin here:
> http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=78385
> There is an inconsistency with the alphabetic case used when URI
> encoding:
> Breakpoint 4, svn_ra_dav__get_dir (session_baton=0x8099d70, 
>     path=0x40039131 "", revision=3, dirents=0xbffff80c, fetched_rev=0x0, 
>     props=0x0, pool=0x808b1f8) at ../svn/subversion/libsvn_ra_dav/fetch.c:919
> 919               if (strcmp(resource->url, stripped_final_url) == 0)
> (gdb) p resource->url
> $8 = 0x80a1248 "/obj/repo/!svn/bc/3/f%c3%a3o"
> (gdb) p stripped_final_url
> $9 = 0x80a22e0 "/obj/repo/!svn/bc/3/f%C3%A3o"
> strcmp will treat those URLs as different.
> Now Subversion's path.c:uri_escape() uses sprintf("%%%02X") so it should
> produce upper case, however the server sends lower case
> <?xml version="1.0" encoding="utf-8"?>
> <D:multistatus xmlns:D="DAV:"
> xmlns:ns1="http://subversion.tigris.org/xmlns/dav/"; xmlns:ns0="DAV:">
> <D:response xmlns:lp1="DAV:" 
> xmlns:lp2="http://subversion.tigris.org/xmlns/dav/";>
> <D:href>/obj/repo/f%c3%a3o/</D:href>
> <D:propstat>
> <D:prop>
> I'm not sure where that gets produced, but Apache's util.c:c2x() uses
> c2x_table[] = "0123456789abcdef" so it could be that.
> A quick fix might be to make Subversion use lower case, a less fragile
> fix would be to compare URLs using a function that handles escape
> sequences that differ in case.
> --------------------------
> Note: this bug breaks every Subversion client out there which provides some 
> sort
> of repository browsing using either 'svn ls' or the equivalent svn_client_ls()
> API. Not that it breaks in sense of crashing, but it gives a bad user 
> impression
> when bogus folders are shown.
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to