]> Sergey Matveev's repositories - public-inbox.git/commitdiff
import: extra check for final byte read
authorEric Wong <e@80x24.org>
Mon, 25 Apr 2016 09:50:00 +0000 (09:50 +0000)
committerEric Wong <e@80x24.org>
Mon, 25 Apr 2016 09:50:26 +0000 (09:50 +0000)
The read could fail entirely and leave $lf undefined.

lib/PublicInbox/Import.pm

index 7073c3d96d70742be0477278d9c8250609f2dd20..8a40fb530cb9c9611a29ae91b44935e4d0b5a5bd 100644 (file)
@@ -93,14 +93,16 @@ sub remove {
        my $left = $1;
        my $offset = 0;
        my $buf = '';
+       my $n;
        while ($left > 0) {
-               my $n = read($r, $buf, $left, $offset);
+               $n = read($r, $buf, $left, $offset);
                defined($n) or die "read cat-blob failed: $!";
                $n == 0 and die 'fast-export (cat-blob) died';
                $left -= $n;
                $offset += $n;
        }
-       read($r, my $lf, 1);
+       $n = read($r, my $lf, 1);
+       defined($n) or die "read final byte of cat-blob failed: $!";
        die "bad read on final byte: <$lf>" if $lf ne "\n";
        my $cur = Email::MIME->new($buf);
        if ($cur->header('Subject') ne $mime->header('Subject') ||