diff --git a/lib/RT/Test/Crypt.pm b/lib/RT/Test/Crypt.pm index 3d5d6c798ad..7c47a66ee33 100644 --- a/lib/RT/Test/Crypt.pm +++ b/lib/RT/Test/Crypt.pm @@ -61,7 +61,7 @@ use 5.010; our @EXPORT = qw(create_a_ticket update_ticket cleanup_headers set_queue_crypt_options check_text_emails send_email_and_check_transaction - create_and_test_outgoing_emails + create_and_test_outgoing_emails gnupg_version ); our $UsingGnuPG = 0; diff --git a/t/security/CVE-2012-4735-incoming-encryption-header.t b/t/security/CVE-2012-4735-incoming-encryption-header.t index d4f080736de..5847be328eb 100644 --- a/t/security/CVE-2012-4735-incoming-encryption-header.t +++ b/t/security/CVE-2012-4735-incoming-encryption-header.t @@ -1,5 +1,6 @@ use strict; use warnings; +use version; use RT::Test::Crypt GnuPG => 1, tests => undef; use Test::Warn; @@ -60,13 +61,19 @@ EOF ($status, $id) = RT::Test->send_via_mailgate($mail); ok $id, "created a ticket"; - like($warnings[0], qr/(?:keyring|keybox) .* created/, 'GnuPG warning'); - like($warnings[1], qr/Failure during GnuPG data: No data has been found\. The reason is 'Invalid packet found'/, 'GnuPG warning'); - like($warnings[2], qr/Failure during GnuPG data: No data has been found\. The reason is 'No armored data'/, 'GnuPG warning'); + like($warnings[0], qr/(?:keyring|keybox) .* created/, 'GnuPG warning (created)'); + like($warnings[1], qr/Failure during GnuPG data: No data has been found\. The reason is 'Invalid packet found'/, 'GnuPG warning (invalid packet)'); - # GnuPG 2.4.5+ issues another warning for gpg-exit - if ( $warnings[3] ) { - like($warnings[3], qr/Failure during GnuPG gpg-exit: Failed to gpg-exit/, 'GnuPG warning'); + my $gnupg_version = RT::Test::Crypt->gnupg_version; + + # GnuPG 2.4.9+ removes the "No armored data" warning. + if ($gnupg_version < version->parse('2.4.9')) { + like($warnings[2], qr/Failure during GnuPG data: No data has been found\. The reason is 'No armored data'/, 'GnuPG warning (no armored data)'); + } + + # GnuPG 2.4.5+ issues a final warning for gpg-exit + if ($gnupg_version >= version->parse('2.4.5')) { + like($warnings[-1], qr/Failure during GnuPG gpg-exit: Failed to gpg-exit/, 'GnuPG warning (gpg-exit)'); } }