opnsense-src/crypto/openssl/util/perl/OpenSSL/fallback.pm
Cy Schubert c94886749e OpenSSL: Vendor import of OpenSSL 3.0.13
* Fixed PKCS12 Decoding crashes ([CVE-2024-0727])
 * Fixed Excessive time spent checking invalid RSA public keys
   ([CVE-2023-6237])
 * Fixed POLY1305 MAC implementation corrupting vector registers on
   PowerPC CPUs which support PowerISA 2.07 ([CVE-2023-6129])
 * Fix excessive time spent in DH check / generation with large Q
   parameter value ([CVE-2023-5678])

Release notes can be found at
            https://www.openssl.org/news/openssl-3.0-notes.html.

Approved by:	emaste

Merge commit '9dd13e84fa8eca8f3462bd55485aa3da8c37f54a'

(cherry picked from commit e0c4386e7e71d93b0edc0c8fa156263fc4a8b0b6)
2024-02-05 08:06:08 -08:00

127 lines
3.6 KiB
Perl

# Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
=head1 NAME
OpenSSL::fallback - push directories to the end of @INC at compile time
=cut
package OpenSSL::fallback;
use strict;
use warnings;
use Carp;
our $VERSION = '0.01';
=head1 SYNOPSIS
use OpenSSL::fallback LIST;
=head1 DESCRIPTION
This small simple module simplifies the addition of fallback directories
in @INC at compile time.
It is used to add extra directories at the end of perl's search path so
that later "use" or "require" statements will find modules which are not
located on perl's default search path.
This is similar to L<lib>, except the paths are I<appended> to @INC rather
than prepended, thus allowing the use of a newer module on perl's default
search path if there is one.
=head1 CAVEAT
Just like with B<lib>, this only works with Unix filepaths.
Just like with L<lib>, this doesn't mean that it only works on Unix, but that
non-Unix users must first translate their file paths to Unix conventions.
# VMS users wanting to put [.my.stuff] into their @INC should write:
use fallback 'my/stuff';
=head1 NOTES
If you try to add a file to @INC as follows, you will be warned, and the file
will be ignored:
use fallback 'file.txt';
The sole exception is the file F<MODULES.txt>, which must contain a list of
sub-directories relative to the location of that F<MODULES.txt> file.
All these sub-directories will be appended to @INC.
=cut
# Forward declare
sub glob;
use constant DEBUG => 0;
sub import {
shift; # Skip module name
foreach (@_) {
my $path = $_;
if ($path eq '') {
carp "Empty compile time value given to use fallback";
next;
}
print STDERR "DEBUG: $path\n" if DEBUG;
unless (-e $path
&& ($path =~ m/(?:^|\/)MODULES.txt/ || -d $path)) {
croak "Parameter to use fallback must be a directory, not a file";
next;
}
my @dirs = ();
if (-f $path) { # It's a MODULES.txt file
(my $dir = $path) =~ s|/[^/]*$||; # quick dirname
open my $fh, $path or die "Could not open $path: $!\n";
while (my $l = <$fh>) {
$l =~ s|\R$||; # Better chomp
my $d = "$dir/$l";
my $checked = $d;
if ($^O eq 'VMS') {
# Some VMS unpackers replace periods with underscores
# We must be real careful not to convert the directories
# '.' and '..', though.
$checked =
join('/',
map { my $x = $_;
$x =~ s|\.|_|g
if ($x ne '..' && $x ne '.');
$x }
split(m|/|, $checked))
unless -e $checked && -d $checked;
}
croak "All lines in $path must be a directory, not a file: $l"
unless -e $checked && -d $checked;
push @INC, $checked;
}
} else { # It's a directory
push @INC, $path;
}
}
}
=head1 SEE ALSO
L<FindBin> - optional module which deals with paths relative to the source
file.
=head1 AUTHOR
Richard Levitte, 2019
=cut