Branko Čibej <br...@wandisco.com> writes:

> On 22.08.2013 22:40, Branko Čibej wrote:
>> On 22.08.2013 18:11, kmra...@rockwellcollins.com wrote:
>>> Passing an invalid URL to svn co causes an abort and core dump.  This
>>> fails with all protocols
>>> http, svn, file.  It occurs with all versions I tested (1.7.5, 1.7.11,
>>> 1.7.12, 1.8.1, and the now defunct 1.8.2)
>>> It occurs with multiple subcommand (ls, info, etc.)  It happens on
>>> both unix and windows platforms.
>>> The "abort" is especially bad on Windows since it will pop open a
>>> dialog window due to the abort.
>>>
>>> It is expected that the command line would return an appropriate user
>>> friendly error message
>>> instead of crashing when faced with invalid input.
>>>
>>>
>>> ./svn co file://./test <file://test>
>>> svn: subversion/libsvn_subr/dirent_uri.c:1315: svn_uri_basename:
>>> Assertion `svn_uri_is_canonical(uri, ((void *)0))' failed.
>>> Abort (core dumped)
>> Interesting ... the assertion itself is fine, however, the command-line
>> client should either reject invalid URL parameters, or canonicalize the
>> input. Apparently we missed one.
>
> Apparently all commands that accept an URL will abort in this way,
> except for "svn relocate". So it looks like some kind of "policy" but I
> think it's the wrong one.

svn_uri_canonicalize allows any characters in hostname, A-Z is converted
to a-z, other characters are simply copied:

          /* Found a hostname, convert to lowercase and copy to dst. */
          if (*src == '[')
            {
                ...
            }
          else
            while (*src && (*src != '/') && (*src != ':'))
              *(dst++) = canonicalize_to_lower((*src++));

What is the canonical form of this?

     scheme://./

Should we drop '.' to give:

     scheme:///

or do we have to retain it as

     scheme://./

and change svn_uri_is_canonical to allow a hostname '.'?

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Reply via email to