X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=t-prot;h=e2b36cff8acaa8b236ddc84531a46a835117e7de;hb=7240fdf982ee2ccc6cc92bf49aa9c81a35c7f190;hp=dca0ac338b7c90cd0e9becba192571297f3d2693;hpb=ea1861c197b63523f945dbfc8c41ba3c53a8e49c;p=pkg%2Ft-prot.git diff --git a/t-prot b/t-prot index dca0ac3..e2b36cf 100755 --- a/t-prot +++ b/t-prot @@ -1,13 +1,13 @@ #!/usr/bin/perl -w -# $Id: t-prot,v 1.255 2007/09/19 11:32:58 jochen Exp $ +# $Id: t-prot,v 1.267 2009/12/30 21:34:16 jochen Exp $ require 5.006; use strict; use Fcntl qw(O_EXCL O_WRONLY O_CREAT); use Getopt::Mixed qw(nextOption); -use constant VER => '2.5'; +use constant VER => '2.10'; use constant REV => ''; -use constant REL => q$Revision: 1.255 $=~m/(\d+(?:\.\d+)+)/; +use constant REL => q$Revision: 1.267 $=~m/(\d+(?:\.\d+)+)/; # MTA expecting mail on STDIN # (you might have to adjust this if using a different MTA) use constant SENDMAIL => '/usr/sbin/sendmail -oi'; @@ -108,7 +108,7 @@ sub help { --kminl=n min. line length for wrapped line; requires -k --kmaxl=n max. line length for wrapped line; requires -k --kdiff=n max. length difference between wrapped lines; req. -k - -L=DIRECTORY mailling list footer directory, treat mailing list + -L=DIRECTORY mailing list footer directory, treat mailing list footers as signature -l delete mailing list footer; requires -L --lax-security use unsafe writing method; USE ON YOUR OWN RISK! @@ -178,12 +178,12 @@ sub remove_footers { for (my $z=0; $z<=$#l; $z++) { chomp($l[$z]); } if (defined $V) { - WIPE: for (my $z=scalar(@$L)-scalar(@l); $z>=0; $z--) - { + WIPE: for (my $z=scalar(@$L)-scalar(@l); $z>=0; $z--) { if (scalar(@l)+$z<=scalar(@$L)) { my $y = 0; for(my $x=1; $x<=scalar(@l); $x++) { - if (index($$L[scalar(@$L)-$x-$z], $l[scalar(@l)-$x])!=0) { + if (index($$L[scalar(@$L)-$x-$z], + $l[scalar(@l)-$x])!=0) { $y = 1; } } @@ -255,11 +255,12 @@ sub decomb { (index($$L[$x+1], $indent)!=0) && ($$L[$x+1] !~ /^$/) && ($$L[$x+1] !~ /^[\s^]/) && - ($$L[$x] !~ /-$/) && + ($$L[$x] !~ /-$/) && ($$L[$x+1] !~ /^\Q[...]\E\s*$/) && ($mua ne 'mutt' || $$L[$x+1] !~ /^(?:\e[^\a]+\a)?\[-- /) && (length($$L[$x])+index($$L[$x+1], ' ')>$max || - (index($$L[$x+1], ' ')<0 && length($$L[$x])+length($$L[$x+1])>$max)) && + (index($$L[$x+1], ' ')<0 && + length($$L[$x])+length($$L[$x+1])>$max)) && (length($$L[$x])+length($$L[$x+1])<$kmaxl) && (length($$L[$x])+length($$L[$x+1])>$kminl) && (length($$L[$x])-length($$L[$x+1])>$kdiff) && @@ -441,23 +442,13 @@ sub process_msg { my (@ads, @hdr, @bo1, @bo2, @ftr, @sig, @vrb, @att) = ((), (), (), (), (), (), (), (), ()); - # First, remove and store lines we might need later... + # Remove and store lines we might need later... # Remove headers: if (!$nohdr) { for ($x=0; $x<$#$lines; $x++) { if (@$lines[$x] =~ /^$/) { last; }; } - - # check body length and stop processing silently if msg is too long: - if ((defined $maxlines) && (@$lines-$x > $maxlines)) { - return; - } - @hdr = @$lines[0..$x]; splice(@$lines, 0, $x+1); } - elsif ((defined $maxlines) && (@$lines > $maxlines)) { - # check body length and stop processing silently if msg is too long: - return; - } # remember the original body lines count my $linecount = scalar(@$lines); @@ -702,6 +693,7 @@ sub process_msg { my @tofu = ('Original Message', 'Original-Nachricht', 'Ursprüngliche Nachricht', + 'Ursprüngliche Nachricht', 'Ursprungliche Nachricht', 'Mensagem original', 'Ursprungligt meddelande', @@ -715,7 +707,7 @@ sub process_msg { DONE: for ($x=0; $x>>[^\<]+<[^\>]+> \d\d?\/\d\d?\/\d\d? \d\d?:\d\d [AP]M >>>/ || $$lines[$x] =~ /^>>> On [A-Z][a-z][a-z]?, [A-Z][a-z][a-z]? \d\d?, \d\d\d\d at [ \d]\d:\d\d [AP]M, in message/))) { @@ -1074,6 +1066,14 @@ if (!open(IN, $ifile)) my @message = ; close IN; +# First, check msg length and stop processing if msg is too long: +if ((defined $maxlines) && (@message > $maxlines)) { + if ($ofile ne 'NONE') { + write_msg(($mda?'|'.SENDMAIL." $mda":">$ofile"), \@message); + } + exit(EX_DATAERR); +} + # this should be self-explanatory: process_msg(\@message);