chiark / gitweb /
dgit-repos-policy-debian.: fix git-cat-file-handling with multiple taints in db (!).
[dgit.git] / infra / dgit-repos-policy-debian
index d687a3e..4dab576 100755 (executable)
@@ -352,9 +352,6 @@ END
     my $mustreject=0;
 
     while (my $taintid = shift @taintids) {
-       # git cat-file prints a spurious newline after it gets EOF
-       # This is not documented.  I guess it might go away.  So we
-       # just read what we expect and then let it get SIGPIPE.
        $!=0; $_ = <CHKOUT>;
        die "($taintid @objscatcmd) $!" unless defined $_;
        printdebug "|< ", $_ if $debuglevel>=2;
@@ -367,6 +364,10 @@ END
        (read CHKOUT, $drop, $nbytes) == $nbytes
            or die "($taintid @objscatcmd) $!";
 
+       $!=0; $_ = <CHKOUT>;
+       die "($taintid @objscatcmd) $!" unless defined $_;
+       die "($taintid @objscatcmd) $_ ?" if m/\S/;
+
        $taintinfoq ||= $poldbh->prepare(<<END);
             SELECT package, time, comment FROM taints WHERE taint_id =  ?
 END