[openssl] master update
Richard Levitte
levitte at openssl.org
Thu Apr 9 10:53:24 UTC 2020
The branch master has been updated
via 8519b244bc6c38f265bf9bad80c52bd7c0ff469f (commit)
from ae3254287ff87e484c7fd8f757cad1440ee8f5ff (commit)
- Log -----------------------------------------------------------------
commit 8519b244bc6c38f265bf9bad80c52bd7c0ff469f
Author: Richard Levitte <levitte at openssl.org>
Date: Thu Apr 9 12:10:24 2020 +0200
OpenSSL::OID: Don't use List::Util
It turns out that the pairwise functions of List::Util came into perl
far later than 5.10.0. We can't use that under those conditions, so
must revert to a quick internal implementation of the functions we're
after.
Reviewed-by: Tomas Mraz <tmraz at fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/11503)
-----------------------------------------------------------------------
Summary of changes:
util/perl/OpenSSL/OID.pm | 35 +++++++++++++++++++++++++++++++----
1 file changed, 31 insertions(+), 4 deletions(-)
diff --git a/util/perl/OpenSSL/OID.pm b/util/perl/OpenSSL/OID.pm
index a4d1049c2c..910c9bb5f7 100644
--- a/util/perl/OpenSSL/OID.pm
+++ b/util/perl/OpenSSL/OID.pm
@@ -22,7 +22,13 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
registered_oid_arcs registered_oid_leaves);
@EXPORT_OK = qw(encode_oid_nums);
-use List::Util;
+# Unfortunately, the pairwise List::Util functionality came with perl
+# v5.19.3, and I want to target absolute compatibility with perl 5.10
+# and up. That means I have to implement quick pairwise functions here.
+
+#use List::Util;
+sub _pairs (@);
+sub _pairmap (&@);
=head1 NAME
@@ -163,7 +169,8 @@ sub parse_oid {
# As we currently only support a name without number as first
# component, the easiest is to have a direct look at it and
# hack it.
- my @first = List::Util::pairmap {
+ my @first = _pairmap {
+ my ($a, $b) = @$_;
return $b if $b ne '';
return @{$name2oid{$a}->{nums}} if $a ne '' && defined $name2oid{$a};
croak "Undefined identifier $a" if $a ne '';
@@ -173,7 +180,8 @@ sub parse_oid {
my @numbers =
(
@first,
- List::Util::pairmap {
+ _pairmap {
+ my ($a, $b) = @$_;
return $b if $b ne '';
croak "Unsupported relative OID $a" if $a ne '';
croak "Empty OID element (how's that possible?)";
@@ -277,6 +285,25 @@ Richard levitte, C<< <richard at levitte.org> >>
=cut
+######## Helpers
+
+sub _pairs (@) {
+ croak "Odd number of arguments" if @_ & 1;
+
+ my @pairlist = ();
+
+ while (@_) {
+ my $x = [ shift, shift ];
+ push @pairlist, $x;
+ }
+ return @pairlist;
+}
+
+sub _pairmap (&@) {
+ my $block = shift;
+ map { $block->($_) } _pairs @_;
+}
+
######## UNIT TESTING
use Test::More;
@@ -309,7 +336,7 @@ sub TEST {
+ scalar @bad_cases;
note 'Predefine a few names OIDs';
- foreach my $pair ( List::Util::pairs @predefined ) {
+ foreach my $pair ( _pairs @predefined ) {
ok( defined eval { register_oid(@$pair) },
"Registering $pair->[0] => $pair->[1]" );
}
More information about the openssl-commits
mailing list