[openssl] master update
Richard Levitte
levitte at openssl.org
Sat Apr 11 13:53:00 UTC 2020
The branch master has been updated
via b93e2ec273f8a6e7165fddaae1fe75615c0edf5a (commit)
via e32e00ab200c83b138594292228d6bd26722bd95 (commit)
via 8270c4791d361847b0b28a30d396006400758a3f (commit)
from eacd30a703b52f5b3e8e70b58f99bd1128458c7c (commit)
- Log -----------------------------------------------------------------
commit b93e2ec273f8a6e7165fddaae1fe75615c0edf5a
Author: Richard Levitte <levitte at openssl.org>
Date: Mon Apr 6 14:00:55 2020 +0200
Fix some errors in documentation
Reviewed-by: Matt Caswell <matt at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11476)
commit e32e00ab200c83b138594292228d6bd26722bd95
Author: Richard Levitte <levitte at openssl.org>
Date: Mon Apr 6 13:58:41 2020 +0200
Initialize files that declare internal symbols
util/other-internal.syms is like util/other.syms, but for internal symbols.
Likewise, util/missingcrypto-internal.txt and util/missingssl-internal.txt
are like util/missingcrypto.txt and util/missingssl.txt
Reviewed-by: Matt Caswell <matt at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11476)
commit 8270c4791d361847b0b28a30d396006400758a3f
Author: Richard Levitte <levitte at openssl.org>
Date: Mon Apr 6 13:51:36 2020 +0200
Rework util/find-doc-nits to distinguish internal documentation
We didn't really distinguish internal and public documentation, or
matched that with the state of the documented symbols. we therefore
needed to rework the logic to account for the state of each symbol.
To simplify things, and make them consistent, we load all of
util/*.num, util/*.syms and util/missing*.txt unconditionally.
Also, we rework the reading of the manuals to happen only once (or
well, not quite, Pod::Checker reads from file too, but at the very
least, our script isn't reading the same file multiple times).
Reviewed-by: Matt Caswell <matt at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11476)
-----------------------------------------------------------------------
Summary of changes:
.../{DEFINE_SPARSE_ARRAY_OF.pod => OPENSSL_SA.pod} | 4 +-
doc/internal/man3/s2i_ASN1_UTF8STRING.pod | 6 +-
util/find-doc-nits | 243 ++++++++++++---------
util/missingcrypto-internal.txt | 3 +
util/missingcrypto.txt | 3 -
.../missingssl-internal.txt | 0
util/other-internal.syms | 3 +
util/other.syms | 12 +-
util/perl/OpenSSL/Util/Pod.pm | 3 +-
9 files changed, 156 insertions(+), 121 deletions(-)
rename doc/internal/man3/{DEFINE_SPARSE_ARRAY_OF.pod => OPENSSL_SA.pod} (98%)
create mode 100644 util/missingcrypto-internal.txt
copy fuzz/corpora/bignum/da39a3ee5e6b4b0d3255bfef95601890afd80709 => util/missingssl-internal.txt (100%)
create mode 100644 util/other-internal.syms
diff --git a/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod b/doc/internal/man3/OPENSSL_SA.pod
similarity index 98%
rename from doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod
rename to doc/internal/man3/OPENSSL_SA.pod
index a78193c2e2..77f1a7b1c2 100644
--- a/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod
+++ b/doc/internal/man3/OPENSSL_SA.pod
@@ -2,15 +2,13 @@
=head1 NAME
-DEFINE_SPARSE_ARRAY_OF, ossl_sa_TYPE_new, ossl_sa_TYPE_free,
+OPENSSL_SA, ossl_sa_TYPE_new, ossl_sa_TYPE_free,
ossl_sa_TYPE_free_leaves, ossl_sa_TYPE_num, ossl_sa_TYPE_doall,
ossl_sa_TYPE_doall_arg, ossl_sa_TYPE_get, ossl_sa_TYPE_set
- sparse array container
=head1 SYNOPSIS
-=for openssl generic
-
#include "crypto/sparse_array.h"
typedef struct sparse_array_st OPENSSL_SA;
diff --git a/doc/internal/man3/s2i_ASN1_UTF8STRING.pod b/doc/internal/man3/s2i_ASN1_UTF8STRING.pod
index c5b434a5b5..9b806eb80b 100644
--- a/doc/internal/man3/s2i_ASN1_UTF8STRING.pod
+++ b/doc/internal/man3/s2i_ASN1_UTF8STRING.pod
@@ -3,12 +3,12 @@
=head1 NAME
i2s_ASN1_UTF8STRING,
-s2i_ASN1_UTF8STRING,
+s2i_ASN1_UTF8STRING
- convert objects from/to ASN.1/string representation
=head1 SYNOPSIS
-=for openssl generic
+ #include "crypto/x509v3.h"
char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method,
ASN1_UTF8STRING *utf8);
@@ -22,7 +22,7 @@ representation. This function is used for B<X509v3> extentions.
=head1 NOTES
-The letters B<i> and B<s> in B<i2s_ASN1_UTF8STRING>() stand for
+The letters B<i> and B<s> in i2s_ASN1_UTF8STRING() stand for
"internal" (that is, an internal C structure) and string respectively.
So B<i2s_ASN1_UTF8STRING>() converts from internal to string.
diff --git a/util/find-doc-nits b/util/find-doc-nits
index bb5dce1a4e..6eea6ad4b3 100755
--- a/util/find-doc-nits
+++ b/util/find-doc-nits
@@ -79,7 +79,6 @@ die "Need one of -[cdehlnouv] flags.\n"
my $temp = '/tmp/docnits.txt';
my $OUT;
-my %public;
my $status = 0;
my @sections = ( 'man1', 'man3', 'man5', 'man7' );
@@ -89,7 +88,17 @@ my %mandatory_sections = (
3 => [ 'SYNOPSIS', 'RETURN VALUES' ],
5 => [ ],
7 => [ ]
-);
+ );
+
+# Symbols that we ignored.
+# They are internal macros that we currently don't document
+my $ignored = qr/(?| ^i2d_
+ | ^d2i_
+ | ^DEPRECATEDIN
+ | \Q_fnsig(3)\E$
+ | ^IMPLEMENT_
+ | ^_?DECLARE_
+ )/x;
# Collect all POD files, both internal and public, and regardless of location
# We collect them in a hash table with each file being a key, so we can attach
@@ -298,12 +307,6 @@ sub name_synopsis {
if %foundfilenames;
err($id, "$simplename (filename) missing from NAME section")
unless $foundfilename;
- if ( $filename !~ /internal/ ) {
- foreach my $n ( keys %names ) {
- err($id, "$n is not public")
- if !defined $public{$n};
- }
- }
# Find all functions in SYNOPSIS
return unless $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms;
@@ -537,7 +540,7 @@ sub functionname_check {
$unmarked =~ s/[BIL]<|>//msg;
err($id, "Malformed symbol: $symbol")
- unless $symbol =~ /^B<.*>$/ && $unmarked =~ /^${symbol_re}$/
+ unless $symbol =~ /^B<.*?>$/ && $unmarked =~ /^${symbol_re}$/
}
# We can't do the kind of collecting coolness that option_check()
@@ -612,16 +615,10 @@ sub wording {
# Perform all sorts of nit/error checks on a manpage
sub check {
- my $filename = shift;
+ my %podinfo = @_;
+ my $filename = $podinfo{filename};
my $dirname = basename(dirname($filename));
-
- my $contents = '';
- {
- local $/ = undef;
- open POD, $filename or die "Couldn't open $filename, $!";
- $contents = <POD>;
- close POD;
- }
+ my $contents = $podinfo{contents};
my $id = "${filename}:1:";
check_head_style($id, $contents);
@@ -663,7 +660,7 @@ sub check {
unless $target =~ /^[_[:alpha:]][_[:alnum:]]*$/
}
- unless ( $contents =~ /=for openssl generic/ ) {
+ unless ( $contents =~ /^=for openssl generic/ms ) {
if ( $filename =~ m|man3/| ) {
name_synopsis($id, $filename, $contents);
functionname_check($id, $filename, $contents);
@@ -740,10 +737,38 @@ sub check {
}
}
+# Information database ###############################################
+
+# Map of links in each POD file; filename => [ "foo(1)", "bar(3)", ... ]
+my %link_map = ();
+# Map of names in each POD file or from "missing" files; possible values are:
+# If found in a POD files, "name(s)" => filename
+# If found in a "missing" file or external, "name(s)" => ''
+my %name_map = ();
+
+# State of man-page names.
+# %state is affected by loading util/*.num and util/*.syms
+# Values may be one of:
+# 'crypto' : belongs in libcrypto (loaded from libcrypto.num)
+# 'ssl' : belongs in libssl (loaded from libssl.num)
+# 'other' : belongs in libcrypto or libssl (loaded from other.syms)
+# 'internal' : Internal
+# 'public' : Public (generic name or external documentation)
+# Any of these values except 'public' may be prefixed with 'missing_'
+# to indicate that they are known to be missing.
+my %state;
+# %missing is affected by loading util/missing*.txt. Values may be one of:
+# 'crypto' : belongs in libcrypto (loaded from libcrypto.num)
+# 'ssl' : belongs in libssl (loaded from libssl.num)
+# 'other' : belongs in libcrypto or libssl (loaded from other.syms)
+# 'internal' : Internal
+my %missing;
+
# Parse libcrypto.num, etc., and return sorted list of what's there.
-sub parsenum {
+sub loadnum ($;$) {
my $file = shift;
- my @apis;
+ my $type = shift;
+ my @symbols;
open my $IN, '<', catfile($config{sourcedir}, $file)
or die "Can't open $file, $!, stopped";
@@ -754,42 +779,52 @@ sub parsenum {
my @fields = split();
die "Malformed line $. in $file: $_"
if scalar @fields != 2 && scalar @fields != 4;
- push @apis, $fields[0];
+ $state{$fields[0].'(3)'} = $type // 'internal';
}
-
close $IN;
-
- return sort @apis;
}
-# Parse all the manpages, getting return map of what they document
-# (by looking at their NAME sections).
-# Map of links in each POD file; filename => [ "foo(1)", "bar(3)", ... ]
-my %link_map = ();
-# Map of names in each POD file; "name(s)" => filename
-my %name_map = ();
-
# Load file of symbol names that we know aren't documented.
-sub loadmissing($)
+sub loadmissing($;$)
{
my $missingfile = shift;
- my @missing;
+ my $type = shift;
open FH, catfile($config{sourcedir}, $missingfile)
or die "Can't open $missingfile";
while ( <FH> ) {
chomp;
next if /^#/;
- push @missing, $_;
+ $missing{$_} = $type // 'internal';
}
close FH;
+}
- for (@missing) {
- err("$missingfile:", "$_ is documented in $name_map{$_}")
- if !$opt_o && exists $name_map{$_} && defined $name_map{$_};
+# Check that we have consistent public / internal documentation and declaration
+sub checkstate () {
+ # Collect all known names, no matter where they come from
+ my %names = map { $_ => 1 } (keys %name_map, keys %state, keys %missing);
+
+ # Check section 3, i.e. functions and macros
+ foreach ( grep { $_ =~ /\(3\)$/ } sort keys %names ) {
+ next if ( $name_map{$_} // '') eq '' || $_ =~ /$ignored/;
+
+ # If a man-page isn't recorded public or if it's recorded missing
+ # and internal, it's declared to be internal.
+ my $declared_internal =
+ ($state{$_} // 'internal') eq 'internal'
+ || ($missing{$_} // '') eq 'internal';
+ # If a man-page isn't recorded internal or if it's recorded missing
+ # and not internal, it's declared to be public
+ my $declared_public =
+ ($state{$_} // 'internal') ne 'internal'
+ || ($missing{$_} // 'internal') ne 'internal';
+
+ err("$_ is supposedly public but is documented as internal")
+ if ( $declared_public && $name_map{$_} =~ /\/internal\// );
+ err("$_ is supposedly internal but is documented as public")
+ if ( $declared_internal && $name_map{$_} !~ /\/internal\// );
}
-
- return @missing;
}
# Check for undocumented macros; ignore those in the "missing" file
@@ -797,13 +832,6 @@ sub loadmissing($)
sub checkmacros {
my $count = 0;
my %seen;
- my @missing;
-
- if ( $opt_o ) {
- @missing = loadmissing('util/missingmacro111.txt');
- } elsif ( $opt_v ) {
- @missing = loadmissing('util/missingmacro.txt');
- }
foreach my $f ( files(TAGS => 'public_header') ) {
# Skip some internals we don't want to document yet.
@@ -816,16 +844,10 @@ sub checkmacros {
while ( <IN> ) {
next unless /^#\s*define\s*(\S+)\(/;
my $macro = "$1(3)"; # We know they're all in section 3
- next if exists $name_map{$macro} || defined $seen{$macro};
- next if $macro =~ /^i2d_/
- || $macro =~ /^d2i_/
- || $macro =~ /^DEPRECATEDIN/
- || $macro =~ /\Q_fnsig(3)\E$/
- || $macro =~ /^IMPLEMENT_/
- || $macro =~ /^_?DECLARE_/;
-
- # Skip macros known to be missing
- next if $opt_v && grep( /^\Q$macro\E$/, @missing);
+ next if defined $name_map{$macro}
+ || defined $missing{$macro}
+ || defined $seen{$macro}
+ || $macro =~ /$ignored/;
err("$f:", "macro $macro undocumented")
if $opt_d || $opt_e;
@@ -840,39 +862,38 @@ sub checkmacros {
# Find out what is undocumented (filtering out the known missing ones)
# and display them.
-sub printem {
- my $libname = shift;
- my $numfile = shift;
- my $missingfile = shift;
+sub printem ($) {
+ my $type = shift;
my $count = 0;
my %seen;
- my @missing = loadmissing($missingfile) if $opt_v;
-
- foreach my $func ( parsenum($numfile) ) {
+ foreach my $func ( grep { $_ eq $type } sort keys %state ) {
$func .= '(3)'; # We know they're all in section 3
- next if exists $name_map{$func} || defined $seen{$func};
- # Skip functions known to be missing.
- next if $opt_v && grep( /^\Q$func\E$/, @missing);
+ # Skip functions known to be missing
+ next if $opt_v && defined $name_map{$func} && $name_map{$func} eq '';
- err("$libname:", "function $func undocumented")
+ # Skip known names
+ next if defined $name_map{$func} || defined $seen{$func};
+
+ err("$type:", "function $func undocumented")
if $opt_d || $opt_e;
$count++;
$seen{$func} = 1;
}
- err("# $count in $numfile are not documented")
+ err("# $count lib$type names are not documented")
if $count > 0;
}
# Collect all the names in a manpage.
sub collectnames {
- my $filename = shift;
+ my %podinfo = @_;
+ my $filename = $podinfo{filename};
$filename =~ m|man(\d)/|;
my $section = $1;
my $simplename = basename($filename, ".pod");
my $id = "${filename}:1:";
- my %podinfo = extract_pod_info($filename, { debug => $debug });
+ my $is_generic = $podinfo{contents} =~ /^=for openssl generic/ms;
unless ( grep { $simplename eq $_ } @{$podinfo{names}} ) {
err($id, "$simplename not in NAME section");
@@ -883,12 +904,15 @@ sub collectnames {
err($id, "'$name' contains white space")
if $name =~ /\s/;
my $name_sec = "$name($section)";
- if ( !exists $name_map{$name_sec} ) {
+ if ( !defined $name_map{$name_sec} ) {
$name_map{$name_sec} = $filename;
+ $state{$name_sec} =
+ ( $filename =~ /\/internal\// ? 'internal' : 'public' )
+ if $is_generic;
} elsif ( $filename eq $name_map{$name_sec} ) {
err($id, "$name_sec duplicated in NAME section of",
$name_map{$name_sec});
- } else {
+ } elsif ( $name_map{$name_sec} ne '' ) {
err($id, "$name_sec also in NAME section of",
$name_map{$name_sec});
}
@@ -896,7 +920,8 @@ sub collectnames {
if ( $podinfo{contents} =~ /=for openssl foreign manual (.*)\n/ ) {
foreach my $f ( split / /, $1 ) {
- $name_map{$f} = undef; # It still exists!
+ $name_map{$f} = ''; # It still exists!
+ $state{$f} = 'public'; # We assume!
}
}
@@ -918,24 +943,15 @@ sub checklinks {
foreach my $filename ( sort keys %link_map ) {
foreach my $link ( @{$link_map{$filename}} ) {
err("${filename}:1:", "reference to non-existing $link")
- unless exists $name_map{$link};
+ unless defined $name_map{$link} || defined $missing{$link};
+ err("${filename}:1:", "reference of internal $link in public documentation $filename")
+ if ( ( ($state{$link} // '') eq 'internal'
+ || ($missing{$link} // '') eq 'internal' )
+ && $filename !~ /\/internal\// );
}
}
}
-# Load the public symbol/macro names
-sub publicize {
- foreach my $name ( parsenum('util/libcrypto.num') ) {
- $public{$name} = 1;
- }
- foreach my $name ( parsenum('util/libssl.num') ) {
- $public{$name} = 1;
- }
- foreach my $name ( parsenum('util/other.syms') ) {
- $public{$name} = 1;
- }
-}
-
# Cipher/digests to skip if they show up as "not implemented"
# because they are, via the "-*" construct.
my %skips = (
@@ -1062,26 +1078,42 @@ if ( $opt_c ) {
exit $status;
}
-# Preparation for some options, populate %name_map and %link_map
-if ( $opt_l || $opt_u || $opt_v ) {
- foreach ( files(TAGS => 'manual') ) {
- collectnames($_);
+# Populate %state
+loadnum('util/libcrypto.num', 'crypto');
+loadnum('util/libssl.num', 'ssl');
+loadnum('util/other.syms', 'other');
+loadnum('util/other-internal.syms');
+if ( $opt_o ) {
+ loadmissing('util/missingmacro111.txt', 'crypto');
+ loadmissing('util/missingcrypto111.txt', 'crypto');
+ loadmissing('util/missingssl111.txt', 'ssl');
+} else {
+ loadmissing('util/missingmacro.txt', 'crypto');
+ loadmissing('util/missingcrypto.txt', 'crypto');
+ loadmissing('util/missingssl.txt', 'ssl');
+ loadmissing('util/missingcrypto-internal.txt');
+ loadmissing('util/missingssl-internal.txt');
+}
+
+if ( $opt_n || $opt_l || $opt_u || $opt_v ) {
+ my @files_to_read = ( $opt_n && @ARGV ) ? @ARGV : files(TAGS => 'manual');
+
+ foreach (@files_to_read) {
+ my %podinfo = extract_pod_info($_, { debug => $debug });
+
+ collectnames(%podinfo)
+ if ( $opt_l || $opt_u || $opt_v );
+
+ check(%podinfo)
+ if ( $opt_n );
}
}
if ( $opt_l ) {
- foreach my $func ( loadmissing("util/missingcrypto.txt") ) {
- $name_map{$func} = undef;
- }
checklinks();
}
if ( $opt_n ) {
- publicize();
- foreach ( @ARGV ? @ARGV : files(TAGS => 'manual') ) {
- check($_);
- }
-
# If not given args, check that all man1 commands are named properly.
if ( scalar @ARGV == 0 ) {
foreach ( files(TAGS => [ 'public_manual', 'man1' ]) ) {
@@ -1091,14 +1123,11 @@ if ( $opt_n ) {
}
}
+checkstate();
+
if ( $opt_u || $opt_v) {
- if ( $opt_o ) {
- printem('crypto', 'util/libcrypto.num', 'util/missingcrypto111.txt');
- printem('ssl', 'util/libssl.num', 'util/missingssl111.txt');
- } else {
- printem('crypto', 'util/libcrypto.num', 'util/missingcrypto.txt');
- printem('ssl', 'util/libssl.num', 'util/missingssl.txt');
- }
+ printem('crypto');
+ printem('ssl');
checkmacros();
}
diff --git a/util/missingcrypto-internal.txt b/util/missingcrypto-internal.txt
new file mode 100644
index 0000000000..4c90857035
--- /dev/null
+++ b/util/missingcrypto-internal.txt
@@ -0,0 +1,3 @@
+WPACKET(3)
+WPACKET_init_der(3)
+WPACKET_init_null_der(3)
diff --git a/util/missingcrypto.txt b/util/missingcrypto.txt
index 73c5af9101..6ce32388a2 100644
--- a/util/missingcrypto.txt
+++ b/util/missingcrypto.txt
@@ -1274,9 +1274,6 @@ WHIRLPOOL_BitUpdate(3)
WHIRLPOOL_Final(3)
WHIRLPOOL_Init(3)
WHIRLPOOL_Update(3)
-WPACKET(3)
-WPACKET_init_der(3)
-WPACKET_init_null_der(3)
X509V3_EXT_CRL_add_conf(3)
X509V3_EXT_CRL_add_nconf(3)
X509V3_EXT_REQ_add_conf(3)
diff --git a/fuzz/corpora/bignum/da39a3ee5e6b4b0d3255bfef95601890afd80709 b/util/missingssl-internal.txt
similarity index 100%
copy from fuzz/corpora/bignum/da39a3ee5e6b4b0d3255bfef95601890afd80709
copy to util/missingssl-internal.txt
diff --git a/util/other-internal.syms b/util/other-internal.syms
new file mode 100644
index 0000000000..5688daa687
--- /dev/null
+++ b/util/other-internal.syms
@@ -0,0 +1,3 @@
+ossl_cmp_allow_unprotected_cb_t datatype
+#
+DEFINE_SPARSE_ARRAY_OF define
diff --git a/util/other.syms b/util/other.syms
index 90fba73ca9..9f44034fd5 100644
--- a/util/other.syms
+++ b/util/other.syms
@@ -11,7 +11,9 @@ OPENSSL_instrument_bus2 assembler
#
ADMISSION_SYNTAX datatype
ADMISSIONS datatype
+ASN1_ITEM datatype
ASN1_STRING_TABLE datatype
+ASYNC_callback_fn datatype
BIO_ADDR datatype
BIO_ADDRINFO datatype
BIO_callback_fn datatype
@@ -37,7 +39,6 @@ GEN_SESSION_CB datatype
OPENSSL_Applink external
OPENSSL_CTX datatype
NAMING_AUTHORITY datatype
-OCSP_parse_url define
OSSL_HTTP_bio_cb_t datatype
OSSL_PARAM datatype
OSSL_PROVIDER datatype
@@ -68,6 +69,7 @@ RAND_poll_cb datatype
SSL_CTX_allow_early_data_cb_fn datatype
SSL_CTX_keylog_cb_func datatype
SSL_allow_early_data_cb_fn datatype
+SSL_async_callback_fn datatype
SSL_client_hello_cb_fn datatype
SSL_custom_ext_add_cb_ex datatype
SSL_custom_ext_free_cb_ex datatype
@@ -111,9 +113,8 @@ custom_ext_free_cb datatype
custom_ext_parse_cb datatype
pem_password_cb datatype
ssl_ct_validation_cb datatype
-ASYNC_callback_fn datatype
-SSL_async_callback_fn datatype
#
+ASN1_BIT_STRING_digest define
BIO_append_filename define
BIO_destroy_bio_pair define
BIO_do_accept define
@@ -124,6 +125,8 @@ BIO_flush define
BIO_get_accept_name define
BIO_get_accept_port define
BIO_get_accept_ip_family define
+BIO_get_app_data define
+BIO_get_ex_new_index define
BIO_get_peer_name define
BIO_get_peer_port define
BIO_get_bind_mode define
@@ -161,6 +164,7 @@ BIO_set_accept_bios define
BIO_set_accept_name define
BIO_set_accept_port define
BIO_set_accept_ip_family define
+BIO_set_app_data define
BIO_set_bind_mode define
BIO_set_buffer_read_data define
BIO_set_buffer_size define
@@ -315,6 +319,7 @@ EVP_rc5_32_12_16_cfb define
EVP_seed_cfb define
EVP_sm4_cfb define
OBJ_cleanup define deprecated 1.1.0
+OCSP_parse_url define
OPENSSL_FILE define
OPENSSL_FUNC define
OPENSSL_LINE define
@@ -366,7 +371,6 @@ OSSL_CMP_LOG_WARNING define
OSSL_CMP_MSTR_HELPER define
OSSL_CMP_MSTR define
OSSL_CMP_P10CR define
-ossl_cmp_allow_unprotected_cb_t datatype
OSSL_CMP_certConf_cb_t datatype
OSSL_CMP_log_cb_t datatype
OSSL_CMP_severity datatype
diff --git a/util/perl/OpenSSL/Util/Pod.pm b/util/perl/OpenSSL/Util/Pod.pm
index ca6d7de2c8..a957655549 100644
--- a/util/perl/OpenSSL/Util/Pod.pm
+++ b/util/perl/OpenSSL/Util/Pod.pm
@@ -185,7 +185,8 @@ sub extract_pod_info {
return ( section => $podinfo{section},
names => [ @names, @invisible_names ],
- contents => $contents );
+ contents => $contents,
+ filename => $filename );
}
1;
More information about the openssl-commits
mailing list