Menu

#2 VCS::Cvs passes abs pathnames to server

open
nobody
None
6
2002-12-09
2002-12-09
Darren Bane
No

VCS version 0.05

Unknown CVS server version.

If I try to create a new VCS::File object with a url
of, say,
vcs://localhost/VCS::Cvs/home/djbane/sandbox/README.txt
VCS gives me an "unable to split log" error.
Presumably, this is because the CVS server returns an
error:
absolute pathname illegal for server

Apparently, this is true for the later versions of CVS.
Absolute pathnames were made illegal to fix some
security bug.

My fix is to make the following patch to VCS/Cvs.pm:

--begin patch----------
Index: Cvs.pm
===================================================================
RCS file:
/dcom/arch/cvs/cvsmonsoon/scripts/lib/perl5/site_perl/5.005/VCS/Cvs.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -c -r1.1 -r1.2
*** Cvs.pm 2002/08/21 10:52:30 1.1
--- Cvs.pm 2002/12/09 14:44:20 1.2
***************
*** 5,10 ****
--- 5,11 ----
use VCS::Cvs::Dir;
use VCS::Cvs::File;
use VCS::Cvs::Version;
+ use File::Spec;

$VERSION = '0.05';

***************
*** 26,32 ****
unless (defined($log_text = $LOG_CACHE{$cache_id})) {
my $cmd =
$LOG_CMD .
! " " . $self->path . " 2>/dev/null |";
#warn "cmd: $cmd\n";
$LOG_CACHE{$cache_id} = $log_text =
$self->_read_pipe($cmd);
}
--- 27,33 ----
unless (defined($log_text = $LOG_CACHE{$cache_id})) {
my $cmd =
$LOG_CMD .
! " " . File::Spec->abs2rel($self->path) .
" 2>/dev/null |";
#warn "cmd: $cmd\n";
$LOG_CACHE{$cache_id} = $log_text =
$self->_read_pipe($cmd);
}
--end patch----------

Note that this requires a reasonably up-to-date Perl
interpreter (I used 5.6.1).

Discussion

  • Darren Bane

    Darren Bane - 2002-12-09

    Context diff, suitable for input to patch

     
  • Darren Bane

    Darren Bane - 2002-12-09
    • priority: 5 --> 6
     
  • Darren Bane

    Darren Bane - 2002-12-09

    Logged In: YES
    user_id=555868

    Form submission mangled the patch. Please use the attached
    file instead.

     

Log in to post a comment.