From: Richard Levitte Date: Tue, 31 Oct 2017 19:06:39 +0000 (+0100) Subject: Generate a dictionary of OIDs for fuzzers X-Git-Tag: OpenSSL_1_1_1-pre1~488 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8e32e1abbc5e00f141d9d0977b4062ca9063ecc5;p=oweals%2Fopenssl.git Generate a dictionary of OIDs for fuzzers It turns out that (some?) fuzzers can read a dictionary of OIDs, so we generate one as part of the usual 'make update'. Fixes #4615 Reviewed-by: Rich Salz Reviewed-by: Kurt Roeckx (Merged from https://github.com/openssl/openssl/pull/4637) --- diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index c9553cf6f7..617d3b91fb 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -612,7 +612,7 @@ uninstall_html_docs: update: generate errors ordinals generate: generate_apps generate_crypto_bn generate_crypto_objects \ - generate_crypto_conf generate_crypto_asn1 + generate_crypto_conf generate_crypto_asn1 generate_fuzz_oids doc-nits: (cd $(SRCDIR); $(PERL) util/find-doc-nits -n -p ) >doc-nits @@ -653,6 +653,11 @@ generate_crypto_asn1: ( cd $(SRCDIR); $(PERL) crypto/asn1/charmap.pl \ > crypto/asn1/charmap.h ) +generate_fuzz_oids: + ( cd $(SRCDIR); $(PERL) fuzz/mkfuzzoids.pl \ + crypto/objects/obj_dat.h \ + > fuzz/oids.txt ) + # Set to -force to force a rebuild ERROR_REBUILD= errors: diff --git a/fuzz/mkfuzzoids.pl b/fuzz/mkfuzzoids.pl new file mode 100755 index 0000000000..4bf97bc152 --- /dev/null +++ b/fuzz/mkfuzzoids.pl @@ -0,0 +1,27 @@ +#! /usr/bin/env perl +# Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (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 + +my $obj_dat_h = $ARGV[0]; + +open IN, '<', $obj_dat_h + || die "Couldn't open $obj_dat_h : $!\n"; + +while() { + s|\R$||; # Better chomp + + next unless m|^\s+((0x[0-9A-F][0-9A-F],)*)\s+/\*\s\[\s*\d+\]\s(OBJ_\w+)\s\*/$|; + + my $OID = $1; + my $OBJname = $3; + + $OID =~ s|0x|\\x|g; + $OID =~ s|,||g; + + print "$OBJname=\"$OID\"\n"; +} +close IN;