chiark / gitweb /
Testing: test.cgi: Break out @verifier_params
[cgi-auth-flexible.git] / cgi-auth-flexible.pm
index d5a3876b644662b963dbb51ee5a030f6189f89d4..a661618067278c8b3099bc846603e34a617f0b19 100644 (file)
@@ -387,7 +387,8 @@ sub srcdump_dirscan_prepare ($$) {
     close $reportfh or die $!;
     srcdump_install($c,$v, $dumpdir, 'licence', 'text/plain');
     $!=0;
-    my @cmd = (qw(tar -zvvcf), "$dumpdir/source.tmp",
+    my @cmd = (qw(sh -ec), 'exec >&2 "$@"', qw(x),
+               qw(tar -zvvcf), "$dumpdir/source.tmp",
               "-C", $dumpdir, qw(  --), @srcfiles);
     my $r = system(@cmd);
     if ($r) {
@@ -1035,16 +1036,17 @@ sub check_divert ($) {
     $r->{Divert} = $r->_db_transaction(sub { $r->_check_divert_core(); });
     $dbh->commit();
 
-    my $cookraw = $r->{_CookieRaw};
-    $r->{CookieSecret} = $r->_blind($cookraw);
+    my $divert = $r->{Divert};
+    my $cookraw = $divert->{_CookieRaw};
+    $divert->{CookieSecret} = $r->_blind($cookraw);
     if ($cookraw) {
-       $r->{Params}{$r->{S}{assoc_param_name}} = [
+       $divert->{Params}{$r->{S}{assoc_param_name}} = [
            $r->_blind($r->hash($cookraw))
            ];
     }
 
-    $r->_debug(Data::Dumper->Dump([$r->{Divert}],[qw(divert)]));
-    return $r->{Divert};
+    $r->_debug(Data::Dumper->Dump([$divert],[qw(divert)]));
+    return $divert;
 }
 
 sub get_divert ($) {
@@ -1178,17 +1180,18 @@ sub _blind_combine ($$$) {
 
 sub _blind ($$) {
     my ($r, $in) = @_;
-    return undef unless defined $in;
+    return $in unless $in;
     my $l = $r->_blind_len($in);
     my $mask = $r->_random(($l+1)>>1);
     $mask = substr $mask, 0, $l;
     my $blound = $r->_blind_combine($in, $mask);
-    return "$blound/$mask";
+    return "$blound.$mask";
 }
 
 sub _unblind ($$) {
     my ($r, $in) = @_;
-    my ($blound,$mask) = ($in =~ m#^(.*)/([0-9a-f]+)$#) or die "$in ?";
+    return $in unless $in;
+    my ($blound,$mask) = ($in =~ m#^(.*)\.([0-9a-f]+)$#) or die "$in ?";
     my $l = $r->_blind_len($blound);
     $l == length($mask) or die "$in ?";
     return $r->_blind_combine($blound, $mask);