Bug#357617: tries to write files in weird places

Marc 'HE' Brockschmidt he at debian.org
Sat Mar 18 16:20:05 UTC 2006


Package: libsvn-core-perl
Version: 1.2.3dfsg1-3
Severity: important

Heya,

I had fun debugging a weird work problem today. The code, old version:

  my $tempdir = tempdir ( "osfconf.XXXXXX", DIR => "/tmp/", CLEANUP => 1);
  my $co_tmpdir = tempdir("svn-co.XXXXXX", DIR => $tempdir, CLEANUP => 1);

  $ctx->checkout($base_repo_URI, $co_tmpdir, 'HEAD', 0);
  #SVN SUCKS SUCKS SUCKS SUCKS, it won't even diff if the timestamps don't differ:
  sleep 1;
  $ctx->merge($base_repo_URI, 'HEAD', $base_repo_URI, $revision, $co_tmpdir, 1, 1, 0, 0);
  my $answer = $ctx->commit($co_tmpdir, 0);

This is part of a CGI, so let's try to use it:
[Sat Mar 18 16:38:26 2006] [error] [client 192.168.1.123] Permission denied: Could not save file: Can't open 'tmp': Permission denied at /usr/share/osf/OSF/Config.pm line 481, referer: http://192.168.1.214/config_restore.cgi
Hrmpfl. After a few weird tries, I found this, working solution:

  my $tempdir = tempdir ( "osfconf.XXXXXX", DIR => "/tmp/", CLEANUP => 1);
  my $co_tmpdir = tempdir("svn-co.XXXXXX", DIR => $tempdir, CLEANUP => 1);

  $ctx->checkout($base_repo_URI, $co_tmpdir, 'HEAD', 0);
  #SVN SUCKS SUCKS SUCKS SUCKS, it won't even diff if the timestamps don't differ:
  sleep 1;
  chdir $tempdir;
  $ctx->merge($base_repo_URI, 'HEAD', $base_repo_URI, $revision, $co_tmpdir, 1, 1, 0, 0);
  my $answer = $ctx->commit($co_tmpdir, 0);

I guess it tries to use . for some tempfile when doing the merge. Which is, err,
not a good idea. The very helpful error message (absolute path would be nice) gives
extra-frustration points.

Marc





More information about the pkg-subversion-maintainers mailing list