tags 412041 patch forwarded 412041 http://rt.cpan.org/Public/Bug/Display.html?id=25530 thanks
On Sun, Mar 18, 2007 at 12:17:27AM +0200, Niko Tyni wrote: > I'll prepare a patch and inform upstream hopefully tomorrow. It looks > like most of the methods in Mail::GnuPG suffer from the same problem. Hi, here's the patch I submitted as CPAN bug #25530: http://rt.cpan.org/Public/Bug/Display.html?id=25530 Cheers, -- Niko Tyni [EMAIL PROTECTED]
--- libmail-gnupg-perl-0.08.orig/GnuPG.pm +++ libmail-gnupg-perl-0.08/GnuPG.pm @@ -63,6 +63,16 @@ return $self; } +sub _maybe_print { + # print to a child gpg process, but don't care if it has died already + # everyone using this will read the error string out afterwards anyway + # see http://bugs.debian.org/412041 + + my $fh = shift; + local $SIG{PIPE} = 'IGNORE'; + print $fh @_; +} + sub _set_options { my ($self,$gnupg) = @_; $gnupg->options->meta_interactive( 0 ); @@ -162,11 +172,11 @@ # This passes in the passphrase die "NO PASSPHRASE" unless defined $passphrase_fh; - print $passphrase_fh $self->{passphrase}; + _maybe_print $passphrase_fh,$self->{passphrase}; close $passphrase_fh; # this passes in the plaintext - print $input $ciphertext; + _maybe_print $input,$ciphertext; # this closes the communication channel, # indicating we are done @@ -547,7 +557,7 @@ ); my $pid = $gnupg->detach_sign( handles => $handles ); die "NO PASSPHRASE" unless defined $passphrase_fh; - print $passphrase_fh $self->{passphrase}; + _maybe_print $passphrase_fh,$self->{passphrase}; close $passphrase_fh; @@ -565,7 +575,7 @@ $plaintext =~ s/\x0D+/\x0D/g; # should we store this back into the body? - print $input $plaintext; + _maybe_print $input,$plaintext; # DEBUG: # print "SIGNING THIS STRING ----->\n"; @@ -653,7 +663,7 @@ $plaintext =~ s/\x0A/\x0D\x0A/g; $plaintext =~ s/\x0D+/\x0D/g; - print $input $plaintext; + _maybe_print $input,$plaintext; close $input; my @ciphertext = <$output>; @@ -756,7 +766,7 @@ } }; - print $input $plaintext; + _maybe_print $input,$plaintext; close $input; my @ciphertext = <$output>; @@ -857,7 +867,7 @@ }; die "NO PASSPHRASE" unless defined $passphrase_fh; - print $passphrase_fh $self->{passphrase}; + _maybe_print $passphrase_fh,$self->{passphrase}; close $passphrase_fh; # this passes in the plaintext @@ -872,7 +882,7 @@ # $plaintext =~ s/\n/\x0D\x0A/sg; # should we store this back into the body? - print $input $plaintext; + _maybe_print $input,$plaintext; # DEBUG: #print "ENCRYPTING THIS STRING ----->\n";