[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