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

Vincent Lefevre updated SVN-4612:
---------------------------------
    Description: 
Various functions assume that the path provided in argument is a canonical 
path. When the path is not canonical, this triggers an assertion failure in the 
library:

{{svn_dirent_join: Assertion `svn_dirent_is_canonical(base, pool)' failed.}}

While this may be acceptable for C programs, this is not in Perl, where one 
should get proper error reporting.

Test case with {{info}}:

{code}
#!/usr/bin/env perl

use strict;
use SVN::Client;

my $svnc = SVN::Client->new;
$svnc->info('.', undef, undef, sub { }, 0);
{code}

The Perl module should make sure that the path is canonical before calling the 
corresponding svn library function (cannot this be automatically generated with 
swig if the code has some form of precondition that the path needs to be 
canonical?). It could either canonicalize the path so that the library call 
succeeds or immediately return an error if the path is not canonical. 
Alternatively, the svn library function could do path canonicalization itself.

  was:
Various functions assume that the path provided in argument is a canonical 
path. When the path is not canonical, this triggers an assertion failure in the 
library. While this may be acceptable for C programs, this is not in Perl, 
where one should get proper error reporting.

Test case with {{info}}:

{code}
#!/usr/bin/env perl

use strict;
use SVN::Client;

my $svnc = SVN::Client->new;
$svnc->info('.', undef, undef, sub { }, 0);
{code}

The Perl module should make sure that the path is canonical before calling the 
corresponding svn library function (cannot this be automatically generated with 
swig if the code has some form of precondition that the path needs to be 
canonical?). It could either canonicalize the path so that the library call 
succeeds or immediately return an error if the path is not canonical. 
Alternatively, the svn library function could do path canonicalization itself.


> With Perl module SVN::Client, assertion failure due to non-canonical path
> -------------------------------------------------------------------------
>
>                 Key: SVN-4612
>                 URL: https://issues.apache.org/jira/browse/SVN-4612
>             Project: Subversion
>          Issue Type: Bug
>          Components: bindings_swig_perl
>    Affects Versions: 1.9.3
>            Reporter: Vincent Lefevre
>
> Various functions assume that the path provided in argument is a canonical 
> path. When the path is not canonical, this triggers an assertion failure in 
> the library:
> {{svn_dirent_join: Assertion `svn_dirent_is_canonical(base, pool)' failed.}}
> While this may be acceptable for C programs, this is not in Perl, where one 
> should get proper error reporting.
> Test case with {{info}}:
> {code}
> #!/usr/bin/env perl
> use strict;
> use SVN::Client;
> my $svnc = SVN::Client->new;
> $svnc->info('.', undef, undef, sub { }, 0);
> {code}
> The Perl module should make sure that the path is canonical before calling 
> the corresponding svn library function (cannot this be automatically 
> generated with swig if the code has some form of precondition that the path 
> needs to be canonical?). It could either canonicalize the path so that the 
> library call succeeds or immediately return an error if the path is not 
> canonical. Alternatively, the svn library function could do path 
> canonicalization itself.



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

Reply via email to