Package: darcs-server Version: 2.0.2-2 Severity: important The heart of this package is a Perl CGI script.
Perl's taint checking has become stricter between 5.8 and 5.10: perl#45671: printf should check taintedness of its template http://rt.perl.org/rt3/Public/Bug/Display.html?id=45671 In this CGI script, $name is tainted in: line 231: printf $fh qq( <$type name="$name" modified="$mtime" ts="$ts" />\n); line 250: printf $fh qq( <repository name="$name" />\n); With those two fixed, it's showing the list of repositories, but only giving a blank page when I browse in to them. I'll log another bug if I work out what else is wrong. There are other printfs in it that look problematic, but I'm not hitting them yet. darcs-server appears to be completely broken with Perl 5.10. Setting this bug non-RC as it shares the source package with the main darcs binary. Steve Two patches attached - one fixes the printfs that I have hit, one should fix a couple of others which look problematic, but I haven't hit them yet. Please remember that it's not working properly for me yet. -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (990, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.26 (SMP w/1 CPU core; PREEMPT) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages darcs-server depends on: ii darcs 2.0.2-2 an advanced revision control syste ii sudo 1.6.9p17-1 Provide limited super user privile ii xsltproc 1.1.24-2 XSLT command line processor Versions of packages darcs-server recommends: ii apache2 2.2.9-7 Apache HTTP Server metapackage ii apache2-mpm-worker [httpd] 2.2.9-7 Apache HTTP Server - high speed th ii exim4 4.69-6 metapackage to ease Exim MTA (v4) ii exim4-daemon-light [mail-tran 4.69-6 lightweight Exim MTA (v4) daemon ii gnupg 1.4.9-3 GNU privacy guard - a free PGP rep darcs-server suggests no packages. -- no debconf information
Thu Sep 11 00:06:59 BST 2008 Steve Cotton <[EMAIL PROTECTED]> * insecure printfs - fix the two that I can currently hit diff -rN -u old-unstable/tools/cgi/darcs.cgi.in new-unstable/tools/cgi/darcs.cgi.in --- old-unstable/tools/cgi/darcs.cgi.in 2008-09-11 00:13:35.000000000 +0100 +++ new-unstable/tools/cgi/darcs.cgi.in 2008-09-11 00:13:35.000000000 +0100 @@ -228,7 +228,7 @@ } else { ($name, $type) = (basename($file), 'file'); } - printf $fh qq( <$type name="$name" modified="$mtime" ts="$ts" />\n); + print $fh qq( <$type name="$name" modified="$mtime" ts="$ts" />\n); } closedir(DH); print $fh "</files>\n"; @@ -247,7 +247,7 @@ while( defined (my $name = readdir(DH)) ) { next if $name =~ /^\.\.?$/; if (-d "$repository_root/$name/_darcs") { - printf $fh qq( <repository name="$name" />\n); + print $fh qq( <repository name="$name" />\n); } } closedir(DH);
Thu Sep 11 00:08:32 BST 2008 Steve Cotton <[EMAIL PROTECTED]> * insecure printfs - fix the two that I have not yet hit diff -rN -u old-unstable/tools/cgi/darcs.cgi.in new-unstable/tools/cgi/darcs.cgi.in --- old-unstable/tools/cgi/darcs.cgi.in 2008-09-11 00:13:48.000000000 +0100 +++ new-unstable/tools/cgi/darcs.cgi.in 2008-09-11 00:13:48.000000000 +0100 @@ -139,10 +139,10 @@ my ($fh, $repo, $dir, $file) = @_; my ($full_path, $path) = '/'; - printf $fh qq(<?xml version="1.0" encoding="$xml_encoding"?>\n); + print $fh qq(<?xml version="1.0" encoding="$xml_encoding"?>\n); - printf $fh qq(<darcs repository="$repo" target="%s/%s%s">\n), - $repo, ($dir ? "$dir/" : ''), ($file ? "$file" : ''); + print $fh qq(<darcs repository="$repo" target="), $repo, "/", + ($dir ? "$dir/" : ''), ($file ? "$file" : ''), qq(">\n); print $fh qq(<path>\n); foreach $path (split('/', "$repo/$dir")) {