Skip to content

Commit

Permalink
Generate a dictionary of OIDs for fuzzers
Browse files Browse the repository at this point in the history
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 <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from openssl/openssl#4637)
  • Loading branch information
levitte committed Oct 31, 2017
1 parent 8fa4d95 commit 8e32e1a
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
7 changes: 6 additions & 1 deletion Configurations/unix-Makefile.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
27 changes: 27 additions & 0 deletions fuzz/mkfuzzoids.pl
Original file line number Diff line number Diff line change
@@ -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(<IN>) {
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;

0 comments on commit 8e32e1a

Please sign in to comment.