[ovs-dev] [PATCH] Remove oss-fuzz tests carried over from ovs

bshas3 at gmail.com bshas3 at gmail.com
Fri Oct 18 09:13:08 UTC 2019


From: Bhargava Shastry <bshas3 at gmail.com>

It appears that ossfuzz specific test harnesses and configuration files
were carried over to the ovn repo from the ovs repo without
justification. This patch removes them until there is a need to
continuously fuzz ovn code as the ovs code is currently fuzzed.

Signed-off-by: Bhargava Shastry <bshas3 at gmail.com>
---
 tests/automake.mk                             |   2 -
 tests/oss-fuzz/automake.mk                    |  66 ---
 tests/oss-fuzz/config/expr.dict               | 120 -----
 .../oss-fuzz/config/expr_parse_target.options |   3 -
 .../config/flow_extract_target.options        |   3 -
 .../config/json_parser_target.options         |   2 -
 tests/oss-fuzz/config/miniflow_target.options |   3 -
 tests/oss-fuzz/config/odp.dict                | 170 -------
 tests/oss-fuzz/config/odp_target.options      |   3 -
 .../config/ofctl_parse_target.options         |   3 -
 tests/oss-fuzz/config/ofp-flow.dict           |  45 --
 .../oss-fuzz/config/ofp_print_target.options  |   3 -
 tests/oss-fuzz/config/ovs.dict                | 293 -----------
 tests/oss-fuzz/expr_parse_target.c            | 464 ------------------
 tests/oss-fuzz/flow_extract_target.c          | 100 ----
 tests/oss-fuzz/fuzzer.h                       |   9 -
 tests/oss-fuzz/json_parser_target.c           |  42 --
 tests/oss-fuzz/miniflow_target.c              | 365 --------------
 tests/oss-fuzz/odp_target.c                   | 149 ------
 tests/oss-fuzz/ofctl_parse_target.c           | 113 -----
 tests/oss-fuzz/ofp_print_target.c             |  47 --
 21 files changed, 2005 deletions(-)
 delete mode 100644 tests/oss-fuzz/automake.mk
 delete mode 100644 tests/oss-fuzz/config/expr.dict
 delete mode 100644 tests/oss-fuzz/config/expr_parse_target.options
 delete mode 100644 tests/oss-fuzz/config/flow_extract_target.options
 delete mode 100644 tests/oss-fuzz/config/json_parser_target.options
 delete mode 100644 tests/oss-fuzz/config/miniflow_target.options
 delete mode 100644 tests/oss-fuzz/config/odp.dict
 delete mode 100644 tests/oss-fuzz/config/odp_target.options
 delete mode 100644 tests/oss-fuzz/config/ofctl_parse_target.options
 delete mode 100644 tests/oss-fuzz/config/ofp-flow.dict
 delete mode 100644 tests/oss-fuzz/config/ofp_print_target.options
 delete mode 100644 tests/oss-fuzz/config/ovs.dict
 delete mode 100644 tests/oss-fuzz/expr_parse_target.c
 delete mode 100644 tests/oss-fuzz/flow_extract_target.c
 delete mode 100644 tests/oss-fuzz/fuzzer.h
 delete mode 100644 tests/oss-fuzz/json_parser_target.c
 delete mode 100644 tests/oss-fuzz/miniflow_target.c
 delete mode 100644 tests/oss-fuzz/odp_target.c
 delete mode 100644 tests/oss-fuzz/ofctl_parse_target.c
 delete mode 100644 tests/oss-fuzz/ofp_print_target.c

diff --git a/tests/automake.mk b/tests/automake.mk
index 013e59280..e86a5273e 100644
--- a/tests/automake.mk
+++ b/tests/automake.mk
@@ -246,5 +246,3 @@ clean-pki:
 	rm -f tests/pki/stamp
 	rm -rf tests/pki
 endif
-
-include tests/oss-fuzz/automake.mk
diff --git a/tests/oss-fuzz/automake.mk b/tests/oss-fuzz/automake.mk
deleted file mode 100644
index 5bf7d0d7c..000000000
--- a/tests/oss-fuzz/automake.mk
+++ /dev/null
@@ -1,66 +0,0 @@
-OSS_FUZZ_TARGETS = \
-	tests/oss-fuzz/flow_extract_target \
-	tests/oss-fuzz/json_parser_target \
-	tests/oss-fuzz/ofp_print_target \
-	tests/oss-fuzz/expr_parse_target \
-	tests/oss-fuzz/odp_target \
-	tests/oss-fuzz/miniflow_target \
-	tests/oss-fuzz/ofctl_parse_target
-EXTRA_PROGRAMS += $(OSS_FUZZ_TARGETS)
-oss-fuzz-targets: $(OSS_FUZZ_TARGETS)
-
-tests_oss_fuzz_flow_extract_target_SOURCES = \
-	tests/oss-fuzz/flow_extract_target.c \
-	tests/oss-fuzz/fuzzer.h
-tests_oss_fuzz_flow_extract_target_LDADD = lib/libopenvswitch.la
-tests_oss_fuzz_flow_extract_target_LDFLAGS = $(LIB_FUZZING_ENGINE) -lc++
-
-tests_oss_fuzz_json_parser_target_SOURCES = \
-	tests/oss-fuzz/json_parser_target.c \
-	tests/oss-fuzz/fuzzer.h
-tests_oss_fuzz_json_parser_target_LDADD = lib/libopenvswitch.la
-tests_oss_fuzz_json_parser_target_LDFLAGS = $(LIB_FUZZING_ENGINE) -lc++
-
-tests_oss_fuzz_ofp_print_target_SOURCES = \
-	tests/oss-fuzz/ofp_print_target.c \
-	tests/oss-fuzz/fuzzer.h
-tests_oss_fuzz_ofp_print_target_LDADD = lib/libopenvswitch.la
-tests_oss_fuzz_ofp_print_target_LDFLAGS = $(LIB_FUZZING_ENGINE) -lc++
-
-tests_oss_fuzz_expr_parse_target_SOURCES = \
-        tests/oss-fuzz/expr_parse_target.c \
-        tests/oss-fuzz/fuzzer.h
-tests_oss_fuzz_expr_parse_target_LDADD = lib/libopenvswitch.la \
-                                         ovn/lib/libovn.la
-tests_oss_fuzz_expr_parse_target_LDFLAGS = $(LIB_FUZZING_ENGINE) -lc++
-
-tests_oss_fuzz_odp_target_SOURCES = \
-        tests/oss-fuzz/odp_target.c \
-        tests/oss-fuzz/fuzzer.h
-tests_oss_fuzz_odp_target_LDADD = lib/libopenvswitch.la
-tests_oss_fuzz_odp_target_LDFLAGS = $(LIB_FUZZING_ENGINE) -lc++
-
-tests_oss_fuzz_miniflow_target_SOURCES = \
-        tests/oss-fuzz/miniflow_target.c \
-        tests/oss-fuzz/fuzzer.h
-tests_oss_fuzz_miniflow_target_LDADD = lib/libopenvswitch.la
-tests_oss_fuzz_miniflow_target_LDFLAGS = $(LIB_FUZZING_ENGINE) -lc++
-
-tests_oss_fuzz_ofctl_parse_target_SOURCES = \
-        tests/oss-fuzz/ofctl_parse_target.c \
-        tests/oss-fuzz/fuzzer.h
-tests_oss_fuzz_ofctl_parse_target_LDADD = lib/libopenvswitch.la
-tests_oss_fuzz_ofctl_parse_target_LDFLAGS = $(LIB_FUZZING_ENGINE) -lc++
-
-EXTRA_DIST += \
-	tests/oss-fuzz/config/flow_extract_target.options \
-	tests/oss-fuzz/config/json_parser_target.options \
-	tests/oss-fuzz/config/ofp_print_target.options \
-	tests/oss-fuzz/config/expr_parse_target.options \
-	tests/oss-fuzz/config/odp_target.options \
-	tests/oss-fuzz/config/miniflow_target.options \
-        tests/oss-fuzz/config/ofctl_parse_target.options \
-	tests/oss-fuzz/config/ovs.dict \
-	tests/oss-fuzz/config/expr.dict \
-	tests/oss-fuzz/config/odp.dict \
-	tests/oss-fuzz/config/ofp-flow.dict
diff --git a/tests/oss-fuzz/config/expr.dict b/tests/oss-fuzz/config/expr.dict
deleted file mode 100644
index 03741ad7d..000000000
--- a/tests/oss-fuzz/config/expr.dict
+++ /dev/null
@@ -1,120 +0,0 @@
-" = "
-" = ("
-" = dns_lookup();"
-" { "
-" };"
-"!"
-"!="
-"$"
-"&&"
-"("
-"()"
-")"
-"),commit,table=,zone=NXM_NX_REG)"
-");"
-", "
-", meter=\"\""
-","
-",bucket=bucket_id=,weight:100,actions=ct(nat(dst="
-"--"
-".."
-"/"
-"/%"
-"0"
-":"
-"<"
-"<->"
-"<="
-"="
-"=="
-"=r"
-">"
-">="
-"["
-"\x00"
-"\x28"
-"]"
-"]:"
-"allow"
-"arp"
-"bool"
-"bswap "
-"bswap %0"
-"cc"
-"clone"
-"ct_clear"
-"ct_clear;"
-"ct_commit"
-"ct_commit("
-"ct_dnat"
-"ct_label"
-"ct_label="
-"ct_lb"
-"ct_mark"
-"ct_mark="
-"ct_mark=%#x"
-"ct_next"
-"ct_next;"
-"ct_snat"
-"decimal"
-"dhcpv6_stateful"
-"dhcpv6_stateless"
-"dns_lookup"
-"drop"
-"drop;"
-"egress"
-"error("
-"get_arp"
-"get_nd"
-"hexadecimal"
-"icmp4"
-"icmp6"
-"ingress"
-"ip.ttl"
-"ip.ttl--;"
-"ipv4"
-"ipv6"
-"log"
-"log("
-"mac"
-"meter"
-"name"
-"name=\"\", "
-"nd_na"
-"nd_na_router"
-"nd_ns"
-"next"
-"next();"
-"next(pipeline=, table=);"
-"next;"
-"output"
-"output;"
-"pipeline"
-"put_arp"
-"put_dhcp_opts"
-"put_dhcpv6_opts"
-"put_nd"
-"put_nd_ra_opts"
-"reject"
-"set_meter"
-"set_meter();"
-"set_meter(, );"
-"set_meter(,);"
-"set_queue"
-"set_queue();"
-"severity"
-"severity="
-"slaac"
-"static_routes"
-"str"
-"table"
-"tcp_reset"
-"type=select,selection_method=dp_hash"
-"uint16"
-"uint32"
-"uint8"
-"verdict"
-"verdict=, "
-"{"
-"||"
-"}"
diff --git a/tests/oss-fuzz/config/expr_parse_target.options b/tests/oss-fuzz/config/expr_parse_target.options
deleted file mode 100644
index fc254e84f..000000000
--- a/tests/oss-fuzz/config/expr_parse_target.options
+++ /dev/null
@@ -1,3 +0,0 @@
-[libfuzzer]
-dict = expr.dict
-close_fd_mask = 3
diff --git a/tests/oss-fuzz/config/flow_extract_target.options b/tests/oss-fuzz/config/flow_extract_target.options
deleted file mode 100644
index 81ad7f18c..000000000
--- a/tests/oss-fuzz/config/flow_extract_target.options
+++ /dev/null
@@ -1,3 +0,0 @@
-[libfuzzer]
-dict = ovs.dict
-close_fd_mask = 3
diff --git a/tests/oss-fuzz/config/json_parser_target.options b/tests/oss-fuzz/config/json_parser_target.options
deleted file mode 100644
index 8d3739a53..000000000
--- a/tests/oss-fuzz/config/json_parser_target.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-dict = json.dict
diff --git a/tests/oss-fuzz/config/miniflow_target.options b/tests/oss-fuzz/config/miniflow_target.options
deleted file mode 100644
index 4849f282d..000000000
--- a/tests/oss-fuzz/config/miniflow_target.options
+++ /dev/null
@@ -1,3 +0,0 @@
-[libfuzzer]
-dict = ovs.dict
-close_fd_mask = 3
\ No newline at end of file
diff --git a/tests/oss-fuzz/config/odp.dict b/tests/oss-fuzz/config/odp.dict
deleted file mode 100644
index a9bdd3e99..000000000
--- a/tests/oss-fuzz/config/odp.dict
+++ /dev/null
@@ -1,170 +0,0 @@
-"("
-")"
-","
-"/0x"
-"0x"
-": "
-"="
-"=r"
-"action"
-"arp"
-"bfd"
-"bos"
-"c1"
-"c2"
-"c3"
-"c4"
-"cc"
-"cfi"
-"cfm"
-"class"
-"clone"
-"code"
-"commit,"
-"crit,"
-"csum"
-"ct"
-"ct(error)"
-"ct_clear"
-"ct_label"
-"ct_mark"
-"ct_state"
-"ct_tuple4"
-"ct_tuple6"
-"ct_zone"
-"dir"
-"dl_type"
-"dnat"
-"dp_hash"
-"drop"
-"dst"
-"dst_port"
-"egress"
-"encap"
-"error"
-"erspan"
-"erspan(ver=1,sid=0x,dir=,idx=0x)"
-"est"
-"eth"
-"eth_type"
-"eth_type(0/)"
-"first"
-"flags"
-"force_commit,"
-"frag"
-"gbp("
-"geneve"
-"gre((flags=0x,proto=0x)"
-"hash,"
-"helper"
-"hlimit"
-"hwid"
-"icmp"
-"icmpv6"
-"id"
-"idx="
-"in_port"
-"ingress"
-"inv"
-"ip6erspan"
-"ipfix(output_port="
-"ipv4"
-"ipv6"
-"ipv6_dst"
-"ipv6_src"
-"l4()"
-"label"
-"lacp"
-"later"
-"len"
-"lldp"
-"mark=/,"
-"match"
-"md2"
-"mdtype"
-"meter()"
-"mpls"
-"nat"
-"nd"
-"new"
-"no"
-"np"
-"ns"
-"nsh"
-"oam,"
-"op"
-"options("
-"out_port("
-"packet_type"
-"pcp="
-"persistent,"
-"pop_eth"
-"pop_mpls(eth_type=0x)"
-"pop_nsh()"
-"pop_vlan"
-"proto"
-"push_eth(src=:::::,dst=:::::,type=)"
-"push_mpls("
-"push_nsh("
-"push_vlan("
-"push_vlan(tpid=,vid=,pcp=,cfi=)"
-"random,"
-"recirc()"
-"recirc_id"
-"rel"
-"rpl"
-"sFlow(vid=,pcp=,output=)"
-"sample"
-"sctp"
-"seq=0x"
-"set("
-"set(nsh("
-"sha"
-"si"
-"sip"
-"skb_mark"
-"skb_priority"
-"sll"
-"slow_path"
-"snat"
-"spi"
-"src"
-"src_port"
-"stp"
-"sym_l4()"
-"target"
-"tc="
-"tclass"
-"tcp"
-"tcp_flags"
-"tha"
-"tip"
-"tll"
-"tnl_pop("
-"tnl_push(tnl_port("
-"too_little"
-"too_much"
-"tos"
-"tp_dst"
-"tp_src"
-"tpid=0x"
-"trk"
-"trunc()"
-"ttl"
-"tun_id"
-"tunnel"
-"tunnel_out_port"
-"type"
-"udp"
-"unspec"
-"userdata"
-"userspace("
-"userspace(error)"
-"userspace(pid"
-"ver"
-"vid"
-"vlan"
-"vxlan"
-"vxlan(flags=0x,vni=0x)"
-"vxlan(gbp("
-"zone"
diff --git a/tests/oss-fuzz/config/odp_target.options b/tests/oss-fuzz/config/odp_target.options
deleted file mode 100644
index 41821b8c1..000000000
--- a/tests/oss-fuzz/config/odp_target.options
+++ /dev/null
@@ -1,3 +0,0 @@
-[libfuzzer]
-close_fd_mask = 3
-dict = odp.dict
diff --git a/tests/oss-fuzz/config/ofctl_parse_target.options b/tests/oss-fuzz/config/ofctl_parse_target.options
deleted file mode 100644
index 6d67dd6ad..000000000
--- a/tests/oss-fuzz/config/ofctl_parse_target.options
+++ /dev/null
@@ -1,3 +0,0 @@
-[libfuzzer]
-close_fd_mask = 3
-dict = ofp-flow.dict
diff --git a/tests/oss-fuzz/config/ofp-flow.dict b/tests/oss-fuzz/config/ofp-flow.dict
deleted file mode 100644
index 01175e5eb..000000000
--- a/tests/oss-fuzz/config/ofp-flow.dict
+++ /dev/null
@@ -1,45 +0,0 @@
-")"
-"("
-"["
-"]"
-","
-"-"
-"0"
-":"
-"="
-"ADD"
-"DEL"
-"DEL_STRICT"
-"MOD"
-"MOD_STRICT"
-"\x00"
-"\x20"
-"\x3F"
-"actions"
-"add"
-"allow_hidden_fields"
-"cc"
-"check_overlap"
-"cookie"
-"delete"
-"delete_strict"
-"duration"
-"eth"
-"hard_age"
-"hard_timeout"
-"idle_age"
-"idle_timeout"
-"importance"
-"modify"
-"modify_strict"
-"n_bytes"
-"n_packets"
-"no_byte_counts"
-"no_packet_counts"
-"no_readonly_table"
-"out_group"
-"out_port"
-"priority"
-"reset_counts"
-"send_flow_rem"
-"table"
diff --git a/tests/oss-fuzz/config/ofp_print_target.options b/tests/oss-fuzz/config/ofp_print_target.options
deleted file mode 100644
index 7f117292e..000000000
--- a/tests/oss-fuzz/config/ofp_print_target.options
+++ /dev/null
@@ -1,3 +0,0 @@
-[libfuzzer]
-close_fd_mask = 3
-dict = ovs.dict
diff --git a/tests/oss-fuzz/config/ovs.dict b/tests/oss-fuzz/config/ovs.dict
deleted file mode 100644
index 243b243ab..000000000
--- a/tests/oss-fuzz/config/ovs.dict
+++ /dev/null
@@ -1,293 +0,0 @@
-"0.2"
-"ADD_SUBSCRIBE"
-"-cbc"
-"CLEARSUB"
-"CLIENT"
-"GIMME"
-"GIMMEDEFS"
-"GIMMESTATS"
-"HM"
-"-hmac96"
-"HM_CTL"
-"HM_STAT"
-"HMST_CLIENT"
-"LOGIN"
-"\\MAILSLOT\\BROWSE"
-"NET-ANNOUNCED"
-"NET-VISIBLE"
-"-nodefs"
-"NONE"
-"OPSTAFF"
-"\\PIPE\\LANMAN"
-"public"
-"REALM"
-"REALM-ANNOUNCED"
-"REALM-VISIBLE"
-"REQ_SUBSCRIBE"
-"RLM_SUBSCRIBE"
-"RLM_UNSUBSCRIBE"
-"SENT"
-" %ssub%s"
-"SUBSCRIBE"
-"SUBSCRIBE_NODEFS"
-"un"
-"UNSUBSCRIBE"
-"USER_FLUSH"
-"USER_HIDE"
-"USER_LOCATE"
-"USER_UNHIDE"
-"WG_CTL"
-"\x01\x00"
-"\x01\x00\x00"
-"\x01\x00\x01"
-"\x01\x00\x02"
-"\x01\x00\x03"
-"\x01\x00\x05"
-"\x01\x01"
-"\x01\x02"
-"\x01\x03"
-"\x01\x04"
-"\x01\x05"
-"\x01\x07"
-"\x01\x0B"
-"\x01\x0C"
-"\x01\x10"
-"\x01\x11"
-"\x01\x12"
-"\x01\x13"
-"\x01\x14"
-"\x01\x15"
-"\x01\x16"
-"\x01\xE8\x48"
-"\x01\xF4"
-"\x01\xF5"
-"\x01\xF6"
-"\x01\xF7"
-"\x01\xF8"
-"\x01\xF9"
-"\x01\xFA"
-"\x01\xFB"
-"\x01\xFC"
-"\x01\xFD"
-"\x01\xFE"
-"\x01\xFF"
-"\x02\x00"
-"\x02\x00\x00"
-"\x02\x01"
-"\x02\x02"
-"\x02\x03"
-"\x02\x04"
-"\x02\x05"
-"\x02\x06"
-"\x02\x07"
-"\x02\x08"
-"\x02\x09"
-"\x02\x0C"
-"\x02\x0E"
-"\x02\x0F"
-"\x02\x11"
-"\x02\x12"
-"\x02\x58"
-"\x02\x81"
-"\x02\x83"
-"\x03\x00"
-"\x03\x01"
-"\x03\x02"
-"\x03\x03"
-"\x03\x06"
-"\x03\xE8"
-"\x03\xE9"
-"\x03\xEA"
-"\x03\xEB"
-"\x03\xEC"
-"\x03\xED"
-"\x03\xEE"
-"\x03\xEF"
-"\x03\xF0"
-"\x03\xF1"
-"\x03\xF2"
-"\x03\xF3"
-"\x03\xF4"
-"\x03\xFF\xFF\xFF"
-"\x04\x00"
-"\x04\x00\x00"
-"\x04\x01"
-"\x04\x02"
-"\x04\x03"
-"\x04\x04"
-"\x04\x51"
-"\x04\x52"
-"\x04\x53"
-"\x04\x55"
-"\x04\x56"
-"\x05\x00"
-"\x05\x01"
-"\x05\x02"
-"\x05\x03"
-"\x05\x53"
-"\x05\xCC"
-"\x05\xDC"
-"\x06\x00"
-"\x06\x01"
-"\x06\xCF"
-"\x07\x07"
-"\x07\xC1"
-"\x07\xFF"
-"\x08\x00"
-"\x08\x00\x00\x00"
-"\x08\x00\x07"
-"\x08\x01"
-"\x08\x06"
-"\x08\x38\x00\x00"
-"\x0A\x00\xB1"
-"\x0C\x01"
-"\x0C\x02"
-"\x0C\x03"
-"\x0C\x04"
-"\x0C\x05"
-"\x0C\x06"
-"\x0C\x08"
-"\x0D\x80"
-"\x0E\x00"
-"\x0E\x10"
-"\x0E\xC8"
-"\x0E\xC9"
-"\x0F\x42\x40"
-"\x0F\xFF"
-"\x10\x00"
-"\x11\x11"
-"\x11\xD7"
-"\x12\x0F"
-"\x12\xBB"
-"\x1A\x30"
-"\x1A\x31"
-"\x1A\x32"
-"\x1B\x21"
-"\x1B\x58"
-"\x1B\x59"
-"\x1B\x5A"
-"\x1B\x5B"
-"\x1B\x5C"
-"\x1B\x5D"
-"\x1B\x5F"
-"\x1B\x61"
-"\x1F\x00"
-"\x1F\x40"
-"\x1F\xFF"
-"\x1F\xFF\xFF"
-"\x20\x00"
-"\x20\x03"
-"\x20\x04"
-"\x27\x10"
-"\x27\x13"
-"\x2F\xBF"
-"\x35\x00\x00"
-"\x3C\x13"
-"\x40\x00"
-"\x40\x04"
-"\x40\x80"
-"\x47\x00\x06\x01"
-"\x4E\x20"
-"\x4E\x21"
-"\x4E\x22"
-"\x4E\x23"
-"\x4E\x24"
-"\x4E\x25"
-"\x4E\x26"
-"\x4E\x27"
-"\x4E\x28"
-"\x4E\x29"
-"\x4E\x2A"
-"\x4E\x2C"
-"\x60\x00"
-"\x60\x01"
-"\x60\x02"
-"\x60\x03"
-"\x60\x04"
-"\x60\x07"
-"\x7F\xFF"
-"\x7F\xFF\xFF"
-"\x80\x00"
-"\x80\x00\x00\x00"
-"\x80\x01"
-"\x80\x05"
-"\x80\x0A"
-"\x80\x21"
-"\x80\x21\x10\x01"
-"\x80\x21\x10\x02"
-"\x80\x23"
-"\x80\x35"
-"\x80\x57"
-"\x80\x9B"
-"\x80\xC2"
-"\x80\xF3"
-"\x80\xFD"
-"\x81\x00"
-"\x81\x37"
-"\x82\x81"
-"\x83\xAA\x7E\x80"
-"\x85\xBE"
-"\x86\xDD"
-"\x88\x08"
-"\x88\x09"
-"\x88\x0B"
-"\x88\x47"
-"\x88\x48"
-"\x88\x63"
-"\x88\x64"
-"\x88\x6F"
-"\x88\x70"
-"\x88\x8E"
-"\x88\x99"
-"\x88\xA2"
-"\x88\xA8"
-"\x88\xCA"
-"\x88\xCC"
-"\x89\x02"
-"\x89\x3A"
-"\x89\x47"
-"\x90\x00"
-"\x91\x00"
-"\xA0\x00"
-"\xAB\xCD"
-"\xB0\x00"
-"\xC0\x00\x00\x00"
-"\xC0\x21"
-"\xC0\x23"
-"\xC0\x25"
-"\xC0\x27"
-"\xC0\x2B"
-"\xC0\x2D"
-"\xC1\x23"
-"\xC2\x23"
-"\xC2\x27"
-"\xDA\xDA"
-"\xE0\x00"
-"\xE0\x00\x00\x00"
-"\xF0\x00\x00\x00"
-"\xF1\x0A"
-"\xF9\x89"
-"\xFC\x00"
-"\xFD\xE9"
-"\xFE\xFE"
-"\xFF\x00"
-"\xFF\x00\x00"
-"\xFF\x00\x00\x00"
-"\xFF\xF0"
-"\xFF\xF8"
-"\xFF\xFD"
-"\xFF\xFE"
-"\xFF\xFF"
-"\xFF\xFF\x00\x00"
-"\xFF\xFF\xF0\x00"
-"\xFF\xFF\xFF\x00"
-"\xFF\xFF\xFF\x01"
-"\xFF\xFF\xFF\x02"
-"\xFF\xFF\xFF\x03"
-"\xFF\xFF\xFF\xEF"
-"\xFF\xFF\xFF\xFD"
-"\xFF\xFF\xFF\xFE"
-"\xFF\xFF\xFF\xFF"
-"ZEPH"
-"ZEPHYR_ADMIN"
-"ZEPHYR_CTL"
diff --git a/tests/oss-fuzz/expr_parse_target.c b/tests/oss-fuzz/expr_parse_target.c
deleted file mode 100644
index 1a3893858..000000000
--- a/tests/oss-fuzz/expr_parse_target.c
+++ /dev/null
@@ -1,464 +0,0 @@
-#include <config.h>
-#include "fuzzer.h"
-#include <errno.h>
-#include <getopt.h>
-#include <sys/wait.h>
-
-#include "command-line.h"
-#include "dp-packet.h"
-#include "fatal-signal.h"
-#include "flow.h"
-#include "openvswitch/dynamic-string.h"
-#include "openvswitch/match.h"
-#include "openvswitch/ofp-actions.h"
-#include "openvswitch/ofpbuf.h"
-#include "openvswitch/vlog.h"
-#include "ovn/actions.h"
-#include "ovn/expr.h"
-#include "ovn/lex.h"
-#include "ovn/lib/logical-fields.h"
-#include "ovn/lib/ovn-l7.h"
-#include "ovn/lib/extend-table.h"
-#include "openvswitch/shash.h"
-#include "simap.h"
-#include "util.h"
-
-static void
-compare_token(const struct lex_token *a, const struct lex_token *b)
-{
-    if (a->type != b->type) {
-        fprintf(stderr, "type differs: %d -> %d\n", a->type, b->type);
-        return;
-    }
-
-    if (!((a->s && b->s && !strcmp(a->s, b->s))
-          || (!a->s && !b->s))) {
-        fprintf(stderr, "string differs: %s -> %s\n",
-                a->s ? a->s : "(null)",
-                b->s ? b->s : "(null)");
-        return;
-    }
-
-    if (a->type == LEX_T_INTEGER || a->type == LEX_T_MASKED_INTEGER) {
-        if (memcmp(&a->value, &b->value, sizeof a->value)) {
-            fprintf(stderr, "value differs\n");
-            return;
-        }
-
-        if (a->type == LEX_T_MASKED_INTEGER
-            && memcmp(&a->mask, &b->mask, sizeof a->mask)) {
-            fprintf(stderr, "mask differs\n");
-            return;
-        }
-
-        if (a->format != b->format
-            && !(a->format == LEX_F_HEXADECIMAL
-                 && b->format == LEX_F_DECIMAL
-                 && a->value.integer == 0)) {
-            fprintf(stderr, "format differs: %d -> %d\n",
-                    a->format, b->format);
-        }
-    }
-}
-
-static void
-test_lex(const char *input)
-{
-    struct ds output;
-
-    ds_init(&output);
-    struct lexer lexer;
-
-    lexer_init(&lexer, input);
-    ds_clear(&output);
-    while (lexer_get(&lexer) != LEX_T_END) {
-        size_t len = output.length;
-        lex_token_format(&lexer.token, &output);
-
-        /* Check that the formatted version can really be parsed back
-         * losslessly. */
-        if (lexer.token.type != LEX_T_ERROR) {
-            const char *s = ds_cstr(&output) + len;
-            struct lexer l2;
-
-            lexer_init(&l2, s);
-            lexer_get(&l2);
-            compare_token(&lexer.token, &l2.token);
-            lexer_destroy(&l2);
-        }
-        ds_put_char(&output, ' ');
-    }
-    lexer_destroy(&lexer);
-
-    ds_chomp(&output, ' ');
-    puts(ds_cstr(&output));
-    ds_destroy(&output);
-}
-
-static void
-create_symtab(struct shash *symtab)
-{
-    ovn_init_symtab(symtab);
-
-    /* For negative testing. */
-    expr_symtab_add_field(symtab, "bad_prereq", MFF_XREG0, "xyzzy", false);
-    expr_symtab_add_field(symtab, "self_recurse", MFF_XREG0,
-                          "self_recurse != 0", false);
-    expr_symtab_add_field(symtab, "mutual_recurse_1", MFF_XREG0,
-                          "mutual_recurse_2 != 0", false);
-    expr_symtab_add_field(symtab, "mutual_recurse_2", MFF_XREG0,
-                          "mutual_recurse_1 != 0", false);
-    expr_symtab_add_string(symtab, "big_string", MFF_XREG0, NULL);
-}
-
-static void
-create_gen_opts(struct hmap *dhcp_opts, struct hmap *dhcpv6_opts,
-                struct hmap *nd_ra_opts)
-{
-    hmap_init(dhcp_opts);
-    dhcp_opt_add(dhcp_opts, "offerip", 0, "ipv4");
-    dhcp_opt_add(dhcp_opts, "netmask", 1, "ipv4");
-    dhcp_opt_add(dhcp_opts, "router",  3, "ipv4");
-    dhcp_opt_add(dhcp_opts, "dns_server", 6, "ipv4");
-    dhcp_opt_add(dhcp_opts, "log_server", 7, "ipv4");
-    dhcp_opt_add(dhcp_opts, "lpr_server",  9, "ipv4");
-    dhcp_opt_add(dhcp_opts, "domain", 15, "str");
-    dhcp_opt_add(dhcp_opts, "swap_server", 16, "ipv4");
-    dhcp_opt_add(dhcp_opts, "policy_filter", 21, "ipv4");
-    dhcp_opt_add(dhcp_opts, "router_solicitation",  32, "ipv4");
-    dhcp_opt_add(dhcp_opts, "nis_server", 41, "ipv4");
-    dhcp_opt_add(dhcp_opts, "ntp_server", 42, "ipv4");
-    dhcp_opt_add(dhcp_opts, "server_id",  54, "ipv4");
-    dhcp_opt_add(dhcp_opts, "tftp_server", 66, "ipv4");
-    dhcp_opt_add(dhcp_opts, "classless_static_route", 121, "static_routes");
-    dhcp_opt_add(dhcp_opts, "ip_forward_enable",  19, "bool");
-    dhcp_opt_add(dhcp_opts, "router_discovery", 31, "bool");
-    dhcp_opt_add(dhcp_opts, "ethernet_encap", 36, "bool");
-    dhcp_opt_add(dhcp_opts, "default_ttl",  23, "uint8");
-    dhcp_opt_add(dhcp_opts, "tcp_ttl", 37, "uint8");
-    dhcp_opt_add(dhcp_opts, "mtu", 26, "uint16");
-    dhcp_opt_add(dhcp_opts, "lease_time",  51, "uint32");
-    dhcp_opt_add(dhcp_opts, "wpad", 252, "str");
-
-    /* DHCPv6 options. */
-    hmap_init(dhcpv6_opts);
-    dhcp_opt_add(dhcpv6_opts, "server_id",  2, "mac");
-    dhcp_opt_add(dhcpv6_opts, "ia_addr",  5, "ipv6");
-    dhcp_opt_add(dhcpv6_opts, "dns_server",  23, "ipv6");
-    dhcp_opt_add(dhcpv6_opts, "domain_search",  24, "str");
-
-    /* IPv6 ND RA options. */
-    hmap_init(nd_ra_opts);
-    nd_ra_opts_init(nd_ra_opts);
-}
-
-static void
-create_addr_sets(struct shash *addr_sets)
-{
-    shash_init(addr_sets);
-
-    static const char *const addrs1[] = {
-        "10.0.0.1", "10.0.0.2", "10.0.0.3",
-    };
-    static const char *const addrs2[] = {
-        "::1", "::2", "::3",
-    };
-    static const char *const addrs3[] = {
-        "00:00:00:00:00:01", "00:00:00:00:00:02", "00:00:00:00:00:03",
-    };
-    static const char *const addrs4[] = { NULL };
-
-    expr_const_sets_add(addr_sets, "set1", addrs1, 3, true);
-    expr_const_sets_add(addr_sets, "set2", addrs2, 3, true);
-    expr_const_sets_add(addr_sets, "set3", addrs3, 3, true);
-    expr_const_sets_add(addr_sets, "set4", addrs4, 0, true);
-}
-
-static void
-create_port_groups(struct shash *port_groups)
-{
-    shash_init(port_groups);
-
-    static const char *const pg1[] = {
-        "lsp1", "lsp2", "lsp3",
-    };
-    static const char *const pg2[] = { NULL };
-
-    expr_const_sets_add(port_groups, "pg1", pg1, 3, false);
-    expr_const_sets_add(port_groups, "pg_empty", pg2, 0, false);
-}
-
-static bool
-lookup_port_cb(const void *ports_, const char *port_name, unsigned int *portp)
-{
-    const struct simap *ports = ports_;
-    const struct simap_node *node = simap_find(ports, port_name);
-    if (!node) {
-        return false;
-    }
-    *portp = node->data;
-    return true;
-}
-
-static bool
-is_chassis_resident_cb(const void *ports_, const char *port_name)
-{
-    const struct simap *ports = ports_;
-    const struct simap_node *node = simap_find(ports, port_name);
-    if (node) {
-        return true;
-    }
-    return false;
-}
-
-static void
-test_parse_actions(const char *input)
-{
-    struct shash symtab;
-    struct hmap dhcp_opts;
-    struct hmap dhcpv6_opts;
-    struct hmap nd_ra_opts;
-    struct simap ports;
-
-    create_symtab(&symtab);
-    create_gen_opts(&dhcp_opts, &dhcpv6_opts, &nd_ra_opts);
-
-    /* Initialize group ids. */
-    struct ovn_extend_table group_table;
-    ovn_extend_table_init(&group_table);
-
-    /* Initialize meter ids for QoS. */
-    struct ovn_extend_table meter_table;
-    ovn_extend_table_init(&meter_table);
-
-    simap_init(&ports);
-    simap_put(&ports, "eth0", 5);
-    simap_put(&ports, "eth1", 6);
-    simap_put(&ports, "LOCAL", ofp_to_u16(OFPP_LOCAL));
-
-    struct ofpbuf ovnacts;
-    struct expr *prereqs;
-    char *error;
-
-    puts(input);
-
-    ofpbuf_init(&ovnacts, 0);
-
-    const struct ovnact_parse_params pp = {
-        .symtab = &symtab,
-        .dhcp_opts = &dhcp_opts,
-        .dhcpv6_opts = &dhcpv6_opts,
-        .nd_ra_opts = &nd_ra_opts,
-        .n_tables = 24,
-        .cur_ltable = 10,
-    };
-    error = ovnacts_parse_string(input, &pp, &ovnacts, &prereqs);
-    if (!error) {
-        /* Convert the parsed representation back to a string and print it,
-         * if it's different from the input. */
-        struct ds ovnacts_s = DS_EMPTY_INITIALIZER;
-        ovnacts_format(ovnacts.data, ovnacts.size, &ovnacts_s);
-        if (strcmp(input, ds_cstr(&ovnacts_s))) {
-            printf("    formats as %s\n", ds_cstr(&ovnacts_s));
-        }
-
-        /* Encode the actions into OpenFlow and print. */
-        const struct ovnact_encode_params ep = {
-            .lookup_port = lookup_port_cb,
-            .aux = &ports,
-            .is_switch = true,
-            .group_table = &group_table,
-            .meter_table = &meter_table,
-
-            .pipeline = OVNACT_P_INGRESS,
-            .ingress_ptable = 8,
-            .egress_ptable = 40,
-            .output_ptable = 64,
-            .mac_bind_ptable = 65,
-        };
-        struct ofpbuf ofpacts;
-        ofpbuf_init(&ofpacts, 0);
-        ovnacts_encode(ovnacts.data, ovnacts.size, &ep, &ofpacts);
-        struct ds ofpacts_s = DS_EMPTY_INITIALIZER;
-        struct ofpact_format_params fp = { .s = &ofpacts_s };
-        ofpacts_format(ofpacts.data, ofpacts.size, &fp);
-        printf("    encodes as %s\n", ds_cstr(&ofpacts_s));
-        ds_destroy(&ofpacts_s);
-        ofpbuf_uninit(&ofpacts);
-
-        /* Print prerequisites if any. */
-        if (prereqs) {
-            struct ds prereqs_s = DS_EMPTY_INITIALIZER;
-            expr_format(prereqs, &prereqs_s);
-            printf("    has prereqs %s\n", ds_cstr(&prereqs_s));
-            ds_destroy(&prereqs_s);
-        }
-
-        /* Now re-parse and re-format the string to verify that it's
-         * round-trippable. */
-        struct ofpbuf ovnacts2;
-        struct expr *prereqs2;
-        ofpbuf_init(&ovnacts2, 0);
-        error = ovnacts_parse_string(ds_cstr(&ovnacts_s), &pp, &ovnacts2,
-                                     &prereqs2);
-        if (!error) {
-            struct ds ovnacts2_s = DS_EMPTY_INITIALIZER;
-            ovnacts_format(ovnacts2.data, ovnacts2.size, &ovnacts2_s);
-            if (strcmp(ds_cstr(&ovnacts_s), ds_cstr(&ovnacts2_s))) {
-                printf("    bad reformat: %s\n", ds_cstr(&ovnacts2_s));
-            }
-            ds_destroy(&ovnacts2_s);
-        } else {
-            printf("    reparse error: %s\n", error);
-            free(error);
-        }
-        expr_destroy(prereqs2);
-
-        ovnacts_free(ovnacts2.data, ovnacts2.size);
-        ofpbuf_uninit(&ovnacts2);
-        ds_destroy(&ovnacts_s);
-    } else {
-        printf("    %s\n", error);
-        free(error);
-    }
-
-    expr_destroy(prereqs);
-    ovnacts_free(ovnacts.data, ovnacts.size);
-    ofpbuf_uninit(&ovnacts);
-
-    simap_destroy(&ports);
-    expr_symtab_destroy(&symtab);
-    shash_destroy(&symtab);
-    dhcp_opts_destroy(&dhcp_opts);
-    dhcp_opts_destroy(&dhcpv6_opts);
-    nd_ra_opts_destroy(&nd_ra_opts);
-    ovn_extend_table_destroy(&group_table);
-    ovn_extend_table_destroy(&meter_table);
-}
-
-static void
-test_parse_expr(const char *input)
-{
-    struct shash symtab;
-    struct shash addr_sets;
-    struct shash port_groups;
-    struct simap ports;
-    struct expr *expr;
-    char *error;
-
-    create_symtab(&symtab);
-    create_addr_sets(&addr_sets);
-    create_port_groups(&port_groups);
-
-    simap_init(&ports);
-    simap_put(&ports, "eth0", 5);
-    simap_put(&ports, "eth1", 6);
-    simap_put(&ports, "LOCAL", ofp_to_u16(OFPP_LOCAL));
-    simap_put(&ports, "lsp1", 0x11);
-    simap_put(&ports, "lsp2", 0x12);
-    simap_put(&ports, "lsp3", 0x13);
-
-    expr = expr_parse_string(input, &symtab, &addr_sets,
-                             &port_groups, &error);
-    if (!error) {
-        expr = expr_annotate(expr, &symtab, &error);
-    }
-    if (!error) {
-        expr = expr_simplify(expr, is_chassis_resident_cb, &ports);
-        expr = expr_normalize(expr);
-        ovs_assert(expr_is_normalized(expr));
-    }
-    if (!error) {
-        struct hmap matches;
-
-        expr_to_matches(expr, lookup_port_cb, &ports, &matches);
-        expr_matches_print(&matches, stdout);
-        expr_matches_destroy(&matches);
-    } else {
-        puts(error);
-        free(error);
-    }
-    expr_destroy(expr);
-    simap_destroy(&ports);
-    expr_symtab_destroy(&symtab);
-    shash_destroy(&symtab);
-    expr_const_sets_destroy(&addr_sets);
-    shash_destroy(&addr_sets);
-    expr_const_sets_destroy(&port_groups);
-    shash_destroy(&port_groups);
-}
-
-static bool
-lookup_atoi_cb(const void *aux OVS_UNUSED, const char *port_name,
-               unsigned int *portp)
-{
-    *portp = atoi(port_name);
-    return true;
-}
-
-static void
-test_expr_to_packets(const char *input)
-{
-    struct shash symtab;
-    create_symtab(&symtab);
-
-    struct flow uflow;
-    char *error = expr_parse_microflow(input, &symtab, NULL, NULL,
-                                       lookup_atoi_cb, NULL, &uflow);
-    if (error) {
-        puts(error);
-        free(error);
-        expr_symtab_destroy(&symtab);
-        shash_destroy(&symtab);
-        return;
-    }
-
-    uint64_t packet_stub[128 / 8];
-    struct dp_packet packet;
-    dp_packet_use_stub(&packet, packet_stub, sizeof packet_stub);
-    flow_compose(&packet, &uflow, NULL, 64);
-
-    struct ds output = DS_EMPTY_INITIALIZER;
-    const uint8_t *buf = dp_packet_data(&packet);
-    for (int i = 0; i < dp_packet_size(&packet); i++) {
-        uint8_t val = buf[i];
-        ds_put_format(&output, "%02"PRIx8, val);
-    }
-    puts(ds_cstr(&output));
-    ds_destroy(&output);
-    dp_packet_uninit(&packet);
-    expr_symtab_destroy(&symtab);
-    shash_destroy(&symtab);
-}
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *input_, size_t size)
-{
-    /* Bail out if we cannot construct at least a 1 char string. */
-    const char *input = (const char *) input_;
-    if (size < 2 || input[size - 1] != '\0' || strchr(input, '\n') ||
-        strlen(input) != size - 1) {
-        return 0;
-    }
-
-    /* Disable logging to avoid write to disk. */
-    static bool isInit = false;
-    if (!isInit) {
-        vlog_set_verbosity("off");
-        isInit = true;
-    }
-
-    /* Parse, annotate, simplify, normalize expr and convert to flows. */
-    test_parse_expr(input);
-
-    /* Parse actions. */
-    test_parse_actions(input);
-
-    /* Test OVN lexer. */
-    test_lex(input);
-
-    /* Expr to packets. */
-    test_expr_to_packets(input);
-
-    return 0;
-}
diff --git a/tests/oss-fuzz/flow_extract_target.c b/tests/oss-fuzz/flow_extract_target.c
deleted file mode 100644
index 4a7451411..000000000
--- a/tests/oss-fuzz/flow_extract_target.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#include <config.h>
-#include "classifier.h"
-#include <assert.h>
-#include "fuzzer.h"
-#include "dp-packet.h"
-#include "flow.h"
-#include "openvswitch/ofp-match.h"
-#include "openvswitch/ofp-print.h"
-#include "openvswitch/match.h"
-#include "classifier-private.h"
-
-static void
-test_flow_hash(const struct flow *flow)
-{
-    uint32_t hash = flow_hash_5tuple(flow, 0);
-    hash = flow_hash_symmetric_l4(flow, 0);
-    hash = flow_hash_symmetric_l2(flow, 0);
-    hash = flow_hash_symmetric_l3l4(flow, 0, NULL);
-    hash = flow_hash_symmetric_l3(flow, 0);
-    hash = flow_hash_fields(flow, NX_HASH_FIELDS_ETH_SRC, hash);
-    hash = flow_hash_fields(flow, NX_HASH_FIELDS_SYMMETRIC_L4, hash);
-    hash = flow_hash_fields(flow, NX_HASH_FIELDS_SYMMETRIC_L3L4, hash);
-    hash = flow_hash_fields(flow, NX_HASH_FIELDS_SYMMETRIC_L3L4_UDP, hash);
-    hash = flow_hash_fields(flow, NX_HASH_FIELDS_NW_SRC, hash);
-    hash = flow_hash_fields(flow, NX_HASH_FIELDS_NW_DST, hash);
-    hash = flow_hash_fields(flow, NX_HASH_FIELDS_SYMMETRIC_L3, hash);
-    ignore(hash);
-}
-
-static void
-test_flow_mask(const struct flow *flow)
-{
-    struct flow_wildcards catchall;
-
-    flow_wildcards_init_catchall(&catchall);
-    flow_mask_hash_fields(flow, &catchall, NX_HASH_FIELDS_ETH_SRC);
-    flow_mask_hash_fields(flow, &catchall, NX_HASH_FIELDS_SYMMETRIC_L4);
-    flow_mask_hash_fields(flow, &catchall, NX_HASH_FIELDS_SYMMETRIC_L3L4);
-    flow_mask_hash_fields(flow, &catchall, NX_HASH_FIELDS_SYMMETRIC_L3L4_UDP);
-    flow_mask_hash_fields(flow, &catchall, NX_HASH_FIELDS_NW_SRC);
-    flow_mask_hash_fields(flow, &catchall, NX_HASH_FIELDS_NW_DST);
-    flow_mask_hash_fields(flow, &catchall, NX_HASH_FIELDS_SYMMETRIC_L3);
-}
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    struct dp_packet packet;
-    struct flow flow;
-    dp_packet_use_const(&packet, data, size);
-    flow_extract(&packet, &flow);
-
-    /* Extract flowmap. */
-    struct flowmap fmap;
-    flow_wc_map(&flow, &fmap);
-
-    /* Parse TCP flags. */
-    if (dp_packet_size(&packet) >= ETH_HEADER_LEN) {
-        uint16_t tcp_flags = parse_tcp_flags(&packet);
-        ignore(tcp_flags);
-    }
-
-    /* Parse TCP flags. */
-    if (dp_packet_size(&packet) >= ETH_HEADER_LEN) {
-        uint16_t tcp_flags = parse_tcp_flags(&packet);
-        ignore(tcp_flags);
-    }
-
-    /* Count headers. */
-    int count = flow_count_vlan_headers(&flow);
-    ignore(count);
-
-    /* Extract metadata. */
-    struct match flow_metadata;
-    flow_get_metadata(&flow, &flow_metadata);
-
-    /* Hashing functions. */
-    test_flow_hash(&flow);
-
-    /* Masking functions. */
-    test_flow_mask(&flow);
-
-    /* Convert flow to match. */
-    struct match match;
-    match_wc_init(&match, &flow);
-
-    struct ofp10_match ext_match;
-    ofputil_match_to_ofp10_match(&match, &ext_match);
-
-    /* Print match and packet. */
-    ofp_print_packet(stdout, dp_packet_data(&packet), dp_packet_size(&packet),
-                     htonl(PT_ETH));
-    ovs_hex_dump(stdout, dp_packet_data(&packet), dp_packet_size(&packet), 0,
-                 true);
-    match_print(&match, NULL);
-
-    ovs_hex_dump(stdout, &ext_match, sizeof ext_match, 0, false);
-
-    return 0;
-}
diff --git a/tests/oss-fuzz/fuzzer.h b/tests/oss-fuzz/fuzzer.h
deleted file mode 100644
index f87ae59e9..000000000
--- a/tests/oss-fuzz/fuzzer.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef FUZZER_H
-#define FUZZER_H 1
-
-#include <stdint.h>
-#include <stddef.h>
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
-
-#endif  /* fuzzer.h */
diff --git a/tests/oss-fuzz/json_parser_target.c b/tests/oss-fuzz/json_parser_target.c
deleted file mode 100644
index e39e04a0d..000000000
--- a/tests/oss-fuzz/json_parser_target.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <config.h>
-#include "fuzzer.h"
-#include "jsonrpc.h"
-#include "openvswitch/json.h"
-#include "ovsdb-error.h"
-#include "ovsdb/table.h"
-#include <assert.h>
-#include <string.h>
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    if (!size || data[size - 1]) {
-        return 0;
-    }
-
-    struct json *j1 = json_from_string((const char *)data);
-    if (j1->type == JSON_STRING) {
-        json_destroy(j1);
-        return 0;
-    }
-
-    free(json_to_string(j1, JSSF_SORT | JSSF_PRETTY));
-
-    struct jsonrpc_msg *msg;
-    char *error = jsonrpc_msg_from_json(j1, &msg); /* Frees 'j1'. */
-    if (error) {
-        free(error);
-        return 0;
-    }
-
-    struct json *j2 = jsonrpc_msg_to_json(msg); /* Frees 'msg'. */
-    if (j2->type == JSON_STRING) {
-        json_destroy(j2);
-        return 0;
-    }
-
-    free(json_to_string(j2, JSSF_SORT | JSSF_PRETTY));
-    json_destroy(j2);
-
-    return 0;
-}
diff --git a/tests/oss-fuzz/miniflow_target.c b/tests/oss-fuzz/miniflow_target.c
deleted file mode 100644
index 800375d63..000000000
--- a/tests/oss-fuzz/miniflow_target.c
+++ /dev/null
@@ -1,365 +0,0 @@
-#include <config.h>
-#include "classifier.h"
-#include "fuzzer.h"
-#include "dp-packet.h"
-#include "flow.h"
-#include "openvswitch/ofp-match.h"
-#include "openvswitch/ofp-print.h"
-#include "openvswitch/match.h"
-#include "classifier-private.h"
-#include "util.h"
-
-static void
-shuffle_u32s(uint32_t *p, size_t n)
-{
-    for (; n > 1; n--, p++) {
-        uint32_t *q = &p[random_range(n)];
-        uint32_t tmp = *p;
-        *p = *q;
-        *q = tmp;
-    }
-}
-
-/* Returns a copy of 'src'.  The caller must eventually free the returned
- * miniflow with free(). */
-static struct miniflow *
-miniflow_clone__(const struct miniflow *src)
-{
-    struct miniflow *dst;
-    size_t data_size;
-
-    data_size = miniflow_alloc(&dst, 1, src);
-    miniflow_clone(dst, src, data_size / sizeof(uint64_t));
-    return dst;
-}
-
-/* Returns a hash value for 'flow', given 'basis'. */
-static inline uint32_t
-miniflow_hash__(const struct miniflow *flow, uint32_t basis)
-{
-    const uint64_t *p = miniflow_get_values(flow);
-    size_t n_values = miniflow_n_values(flow);
-    struct flowmap hash_map = FLOWMAP_EMPTY_INITIALIZER;
-    uint32_t hash = basis;
-    size_t idx;
-
-    FLOWMAP_FOR_EACH_INDEX (idx, flow->map) {
-        uint64_t value = *p++;
-
-        if (value) {
-            hash = hash_add64(hash, value);
-            flowmap_set(&hash_map, idx, 1);
-        }
-    }
-    map_t map;
-    FLOWMAP_FOR_EACH_MAP (map, hash_map) {
-        hash = hash_add64(hash, map);
-    }
-
-    return hash_finish(hash, n_values);
-}
-
-static uint32_t
-random_value(void)
-{
-    static const uint32_t values_[] =
-        { 0xffffffff, 0xaaaaaaaa, 0x55555555, 0x80000000,
-          0x00000001, 0xface0000, 0x00d00d1e, 0xdeadbeef };
-
-    return values_[random_range(ARRAY_SIZE(values_))];
-}
-
-static bool
-choose(unsigned int n, unsigned int *idxp)
-{
-    if (*idxp < n) {
-        return true;
-    } else {
-        *idxp -= n;
-        return false;
-    }
-}
-
-#define FLOW_U32S (FLOW_U64S * 2)
-
-static bool
-init_consecutive_values(int n_consecutive, struct flow *flow,
-                        unsigned int *idxp)
-{
-    uint32_t *flow_u32 = (uint32_t *) flow;
-
-    if (choose(FLOW_U32S - n_consecutive + 1, idxp)) {
-        int i;
-
-        for (i = 0; i < n_consecutive; i++) {
-            flow_u32[i + *idxp] = random_value();
-        }
-        return true;
-    } else {
-        return false;
-    }
-}
-
-static bool
-next_random_flow(struct flow *flow, unsigned int idx)
-{
-    uint32_t *flow_u32 = (uint32_t *) flow;
-
-    memset(flow, 0, sizeof *flow);
-
-    /* Empty flow. */
-    if (choose(1, &idx)) {
-        return true;
-    }
-
-    /* All flows with a small number of consecutive nonzero values. */
-    for (int i = 1; i <= 4; i++) {
-        if (init_consecutive_values(i, flow, &idx)) {
-            return true;
-        }
-    }
-
-    /* All flows with a large number of consecutive nonzero values. */
-    for (int i = FLOW_U32S - 4; i <= FLOW_U32S; i++) {
-        if (init_consecutive_values(i, flow, &idx)) {
-            return true;
-        }
-    }
-
-    /* All flows with exactly two nonconsecutive nonzero values. */
-    if (choose((FLOW_U32S - 1) * (FLOW_U32S - 2) / 2, &idx)) {
-        int ofs1;
-
-        for (ofs1 = 0; ofs1 < FLOW_U32S - 2; ofs1++) {
-            int ofs2;
-
-            for (ofs2 = ofs1 + 2; ofs2 < FLOW_U32S; ofs2++) {
-                if (choose(1, &idx)) {
-                    flow_u32[ofs1] = random_value();
-                    flow_u32[ofs2] = random_value();
-                    return true;
-                }
-            }
-        }
-        OVS_NOT_REACHED();
-    }
-
-    /* 16 randomly chosen flows with N >= 3 nonzero values. */
-    if (choose(16 * (FLOW_U32S - 4), &idx)) {
-        int n = idx / 16 + 3;
-
-        for (int i = 0; i < n; i++) {
-            flow_u32[i] = random_value();
-        }
-        shuffle_u32s(flow_u32, FLOW_U32S);
-
-        return true;
-    }
-
-    return false;
-}
-
-static void
-any_random_flow(struct flow *flow)
-{
-    static unsigned int max;
-    if (!max) {
-        while (next_random_flow(flow, max)) {
-            max++;
-        }
-    }
-
-    next_random_flow(flow, random_range(max));
-}
-
-static void
-toggle_masked_flow_bits(struct flow *flow, const struct flow_wildcards *mask)
-{
-    const uint32_t *mask_u32 = (const uint32_t *) &mask->masks;
-    uint32_t *flow_u32 = (uint32_t *) flow;
-    int i;
-
-    for (i = 0; i < FLOW_U32S; i++) {
-        if (mask_u32[i] != 0) {
-            uint32_t bit;
-
-            do {
-                bit = 1u << random_range(32);
-            } while (!(bit & mask_u32[i]));
-            flow_u32[i] ^= bit;
-        }
-    }
-}
-
-static void
-wildcard_extra_bits(struct flow_wildcards *mask)
-{
-    uint32_t *mask_u32 = (uint32_t *) &mask->masks;
-    int i;
-
-    for (i = 0; i < FLOW_U32S; i++) {
-        if (mask_u32[i] != 0) {
-            uint32_t bit;
-
-            do {
-                bit = 1u << random_range(32);
-            } while (!(bit & mask_u32[i]));
-            mask_u32[i] &= ~bit;
-        }
-    }
-}
-
-static void
-test_miniflow(struct flow *flow)
-{
-    struct miniflow *miniflow, *miniflow2, *miniflow3;
-    struct flow flow2, flow3;
-    struct flow_wildcards mask;
-    struct minimask *minimask;
-    int i;
-
-    const uint64_t *flow_u64 = (const uint64_t *) flow;
-
-    /* Convert flow to miniflow. */
-    miniflow = miniflow_create(flow);
-
-    /* Obtain miniflow hash. */
-    uint32_t hash = miniflow_hash_5tuple(miniflow, 0);
-    ignore(hash);
-
-    /* Check that the flow equals its miniflow. */
-    for (i = 0; i < FLOW_MAX_VLAN_HEADERS; i++) {
-        ovs_assert(miniflow_get_vid(miniflow, i) ==
-               vlan_tci_to_vid(flow->vlans[i].tci));
-    }
-    for (i = 0; i < FLOW_U64S; i++) {
-        ovs_assert(miniflow_get(miniflow, i) == flow_u64[i]);
-    }
-
-    /* Check that the miniflow equals itself. */
-    ovs_assert(miniflow_equal(miniflow, miniflow));
-
-    /* Convert miniflow back to flow and verify that it's the same. */
-    miniflow_expand(miniflow, &flow2);
-    ovs_assert(flow_equal(flow, &flow2));
-    /* Check that copying a miniflow works properly. */
-    miniflow2 = miniflow_clone__(miniflow);
-    ovs_assert(miniflow_equal(miniflow, miniflow2));
-    ovs_assert(miniflow_hash__(miniflow, 0) == miniflow_hash__(miniflow2, 0));
-    miniflow_expand(miniflow2, &flow3);
-    ovs_assert(flow_equal(flow, &flow3));
-
-    /* Check that masked matches work as expected for identical flows and
-         * miniflows. */
-    do {
-            next_random_flow(&mask.masks, 1);
-    } while (flow_wildcards_is_catchall(&mask));
-    minimask = minimask_create(&mask);
-    ovs_assert(minimask_is_catchall(minimask)
-           == flow_wildcards_is_catchall(&mask));
-    ovs_assert(miniflow_equal_in_minimask(miniflow, miniflow2, minimask));
-    ovs_assert(miniflow_equal_flow_in_minimask(miniflow, &flow2, minimask));
-    ovs_assert(miniflow_hash_in_minimask(miniflow, minimask, 0x12345678) ==
-           flow_hash_in_minimask(flow, minimask, 0x12345678));
-    ovs_assert(minimask_hash(minimask, 0) ==
-           miniflow_hash__(&minimask->masks, 0));
-
-    /* Check that masked matches work as expected for differing flows and
-     * miniflows. */
-    toggle_masked_flow_bits(&flow2, &mask);
-    ovs_assert(!miniflow_equal_flow_in_minimask(miniflow, &flow2, minimask));
-    miniflow3 = miniflow_create(&flow2);
-    ovs_assert(!miniflow_equal_in_minimask(miniflow, miniflow3, minimask));
-
-    free(miniflow);
-    free(miniflow2);
-    free(miniflow3);
-    free(minimask);
-}
-
-static void
-test_minimask_has_extra(struct flow *flow)
-{
-    struct flow_wildcards catchall;
-    struct minimask *minicatchall;
-
-    flow_wildcards_init_catchall(&catchall);
-    minicatchall = minimask_create(&catchall);
-    ovs_assert(minimask_is_catchall(minicatchall));
-
-    struct flow_wildcards mask;
-    struct minimask *minimask;
-
-    mask.masks = *flow;
-    minimask = minimask_create(&mask);
-    ovs_assert(!minimask_has_extra(minimask, minimask));
-    ovs_assert(minimask_has_extra(minicatchall, minimask)
-           == !minimask_is_catchall(minimask));
-    if (!minimask_is_catchall(minimask)) {
-        struct minimask *minimask2;
-
-        wildcard_extra_bits(&mask);
-        minimask2 = minimask_create(&mask);
-        ovs_assert(minimask_has_extra(minimask2, minimask));
-        ovs_assert(!minimask_has_extra(minimask, minimask2));
-        free(minimask2);
-    }
-
-    free(minimask);
-    free(minicatchall);
-}
-
-static void
-test_minimask_combine(struct flow *flow)
-{
-    struct flow_wildcards catchall;
-    struct minimask *minicatchall;
-
-    flow_wildcards_init_catchall(&catchall);
-    minicatchall = minimask_create(&catchall);
-    ovs_assert(minimask_is_catchall(minicatchall));
-
-    struct minimask *minimask, *minimask2;
-    struct flow_wildcards mask, mask2, combined, combined2;
-    struct {
-        struct minimask minicombined;
-        uint64_t storage[FLOW_U64S];
-    } m;
-    struct flow flow2;
-
-    mask.masks = *flow;
-    minimask = minimask_create(&mask);
-
-    minimask_combine(&m.minicombined, minimask, minicatchall, m.storage);
-    ovs_assert(minimask_is_catchall(&m.minicombined));
-
-    any_random_flow(&flow2);
-    mask2.masks = flow2;
-    minimask2 = minimask_create(&mask2);
-
-    minimask_combine(&m.minicombined, minimask, minimask2, m.storage);
-    flow_wildcards_and(&combined, &mask, &mask2);
-    minimask_expand(&m.minicombined, &combined2);
-    ovs_assert(flow_wildcards_equal(&combined, &combined2));
-
-    free(minimask);
-    free(minimask2);
-
-    free(minicatchall);
-}
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    struct dp_packet packet;
-    struct flow flow;
-    dp_packet_use_const(&packet, data, size);
-    flow_extract(&packet, &flow);
-
-    /* Do miniflow tests. */
-    test_miniflow(&flow);
-    test_minimask_has_extra(&flow);
-    test_minimask_combine(&flow);
-
-    return 0;
-}
diff --git a/tests/oss-fuzz/odp_target.c b/tests/oss-fuzz/odp_target.c
deleted file mode 100644
index ae61cdca3..000000000
--- a/tests/oss-fuzz/odp_target.c
+++ /dev/null
@@ -1,149 +0,0 @@
-#include <config.h>
-#include "fuzzer.h"
-#undef NDEBUG
-#include "odp-util.h"
-#include <stdio.h>
-#include "openvswitch/dynamic-string.h"
-#include "flow.h"
-#include "openvswitch/match.h"
-#include "openvswitch/ofpbuf.h"
-#include "util.h"
-#include "openvswitch/ofp-flow.h"
-#include "openvswitch/vlog.h"
-
-static int
-parse_keys(bool wc_keys, const char *in)
-{
-    int exit_code = 0;
-
-    enum odp_key_fitness fitness;
-    struct ofpbuf odp_key;
-    struct ofpbuf odp_mask;
-    struct flow flow;
-    struct ds out;
-    int error;
-
-    /* Convert string to OVS DP key. */
-    ofpbuf_init(&odp_key, 0);
-    ofpbuf_init(&odp_mask, 0);
-    error = odp_flow_from_string(in, NULL,
-                                 &odp_key, &odp_mask, NULL);
-    if (error) {
-        printf("odp_flow_from_string: error\n");
-        goto next;
-    }
-
-    if (!wc_keys) {
-        struct odp_flow_key_parms odp_parms = {
-            .flow = &flow,
-            .support = {
-                .recirc = true,
-                .ct_state = true,
-                .ct_zone = true,
-                .ct_mark = true,
-                .ct_label = true,
-                .max_vlan_headers = SIZE_MAX,
-            },
-        };
-
-        /* Convert odp_key to flow. */
-        fitness = odp_flow_key_to_flow(odp_key.data, odp_key.size,
-                                       &flow, NULL);
-        switch (fitness) {
-            case ODP_FIT_PERFECT:
-                break;
-
-            case ODP_FIT_TOO_LITTLE:
-                printf("ODP_FIT_TOO_LITTLE: ");
-                break;
-
-            case ODP_FIT_TOO_MUCH:
-                printf("ODP_FIT_TOO_MUCH: ");
-                break;
-
-            case ODP_FIT_ERROR:
-                printf("odp_flow_key_to_flow: error\n");
-                goto next;
-        }
-        /* Convert cls_rule back to odp_key. */
-        ofpbuf_uninit(&odp_key);
-        ofpbuf_init(&odp_key, 0);
-        odp_flow_key_from_flow(&odp_parms, &odp_key);
-
-        if (odp_key.size > ODPUTIL_FLOW_KEY_BYTES) {
-            printf ("too long: %"PRIu32" > %d\n",
-                    odp_key.size, ODPUTIL_FLOW_KEY_BYTES);
-            exit_code = 1;
-        }
-    }
-
-    /* Convert odp_key to string. */
-    ds_init(&out);
-    if (wc_keys) {
-        odp_flow_format(odp_key.data, odp_key.size,
-                        odp_mask.data, odp_mask.size, NULL, &out, false);
-    } else {
-        odp_flow_key_format(odp_key.data, odp_key.size, &out);
-    }
-    puts(ds_cstr(&out));
-    ds_destroy(&out);
-
-next:
-    ofpbuf_uninit(&odp_key);
-    ofpbuf_uninit(&odp_mask);
-
-    return exit_code;
-}
-
-static int
-parse_actions(const char *in)
-{
-    struct ofpbuf odp_actions;
-    struct ds out;
-    int error;
-
-    /* Convert string to OVS DP actions. */
-    ofpbuf_init(&odp_actions, 0);
-    error = odp_actions_from_string(in, NULL, &odp_actions);
-    if (error) {
-        printf("odp_actions_from_string: error\n");
-        goto next;
-    }
-
-    /* Convert odp_actions back to string. */
-    ds_init(&out);
-    format_odp_actions(&out, odp_actions.data, odp_actions.size, NULL);
-    puts(ds_cstr(&out));
-    ds_destroy(&out);
-
-next:
-    ofpbuf_uninit(&odp_actions);
-    return 0;
-}
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    /* Bail out if we cannot construct at least a 1 char string. */
-    const char *input = (const char *) data;
-    if (size < 2 || input[size - 1] != '\0' || strchr(input, '\n') ||
-        strlen(input) != size - 1) {
-        return 0;
-    }
-
-    /* Disable logging to avoid write to disk. */
-    static bool isInit = false;
-    if (!isInit) {
-        vlog_set_verbosity("off");
-        isInit = true;
-    }
-
-    /* Parse keys and wc keys. */
-    parse_keys(false, input);
-    parse_keys(true, input);
-
-    /* Parse actions. */
-    parse_actions(input);
-
-    return 0;
-}
diff --git a/tests/oss-fuzz/ofctl_parse_target.c b/tests/oss-fuzz/ofctl_parse_target.c
deleted file mode 100644
index b4db52f7e..000000000
--- a/tests/oss-fuzz/ofctl_parse_target.c
+++ /dev/null
@@ -1,113 +0,0 @@
-#include <config.h>
-#include "fuzzer.h"
-#include "openvswitch/ofp-flow.h"
-#include "ofp-version-opt.h"
-#include "ofproto/ofproto.h"
-#include "openflow/openflow.h"
-#include "openvswitch/ofpbuf.h"
-#include "openvswitch/vlog.h"
-#include "util.h"
-
-static void
-ofctl_parse_flows__(struct ofputil_flow_mod *fms, size_t n_fms,
-                    enum ofputil_protocol usable_protocols)
-{
-    enum ofputil_protocol protocol = 0;
-    char *usable_s;
-    size_t i;
-
-    usable_s = ofputil_protocols_to_string(usable_protocols);
-    printf("usable protocols: %s\n", usable_s);
-    free(usable_s);
-
-    if (!(usable_protocols & OFPUTIL_P_ANY)) {
-        printf("no usable protocol\n");
-        goto free;
-    }
-    for (i = 0; i < sizeof(enum ofputil_protocol) * CHAR_BIT; i++) {
-        protocol = 1u << i;
-        if (protocol & usable_protocols & OFPUTIL_P_ANY) {
-            break;
-        }
-    }
-    ovs_assert(is_pow2(protocol));
-
-    printf("chosen protocol: %s\n", ofputil_protocol_to_string(protocol));
-
-    for (i = 0; i < n_fms; i++) {
-        struct ofputil_flow_mod *fm = &fms[i];
-        struct ofpbuf *msg;
-
-        msg = ofputil_encode_flow_mod(fm, protocol);
-        ofpbuf_delete(msg);
-    }
-
-free:
-    for (i = 0; i < n_fms; i++) {
-        struct ofputil_flow_mod *fm = &fms[i];
-        free(CONST_CAST(struct ofpact *, fm->ofpacts));
-        minimatch_destroy(&fm->match);
-    }
-}
-
-/* "parse-flow FLOW": parses the argument as a flow (like add-flow) and prints
- * it back to stdout.  */
-static void
-ofctl_parse_flow(const char *input, int command)
-{
-    enum ofputil_protocol usable_protocols;
-    struct ofputil_flow_mod fm;
-    char *error;
-
-    error = parse_ofp_flow_mod_str(&fm, input, NULL, NULL,
-                                   command, &usable_protocols);
-    if (error) {
-        printf("Error encountered: %s\n", error);
-        free(error);
-    } else {
-        ofctl_parse_flows__(&fm, 1, usable_protocols);
-    }
-}
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    /* Bail out if we cannot construct at least a 1 char string.
-     * Reserve 1 byte to decide flow mod command.
-     *
-     * Here's the structure of data we expect
-     * |--Byte 1--|--Byte 2--|...|--Byte (size-1)--|
-     *
-     * where,
-     *
-     * Byte 1: Used to decide which ofp flow mod command to test
-     * Bytes 2--(size-1): The C string that is actually passed to
-     *                    ofctl_parse_flow() test API.
-     *
-     * This means that the fuzzed input is actually a C string of
-     * length = (size -2) with the terminal byte being the NUL
-     * character. Moreover, this string is expected to not contain
-     * a new-line character.
-     */
-    const char *stream = (const char *) data;
-    if (size < 3 || stream[size - 1] != '\0' || strchr(&stream[1], '\n') ||
-        strlen(&stream[1]) != size - 2) {
-        return 0;
-    }
-
-    /* Disable logging to avoid write to disk. */
-    static bool isInit = false;
-    if (!isInit) {
-        vlog_set_verbosity("off");
-        isInit = true;
-    }
-
-    /* Decide test parameters using first byte of fuzzed input. */
-    int command = (stream[0] % OFPFC_DELETE_STRICT) + 1;
-
-    /* Fuzz extended match parsing. */
-    const char *input = &stream[1];
-    ofctl_parse_flow(input, command);
-
-    return 0;
-}
diff --git a/tests/oss-fuzz/ofp_print_target.c b/tests/oss-fuzz/ofp_print_target.c
deleted file mode 100644
index 126f2623f..000000000
--- a/tests/oss-fuzz/ofp_print_target.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <config.h>
-#include "fuzzer.h"
-#include "dp-packet.h"
-#include "openvswitch/ofp-print.h"
-#include "openvswitch/ofpbuf.h"
-#include "openvswitch/vlog.h"
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    if (size < sizeof(struct ofp_header)) {
-        return 0;
-    }
-
-    static bool isInit = false;
-    if (!isInit) {
-        vlog_set_verbosity("off");
-        isInit = true;
-    }
-
-    struct ofpbuf b;
-    ofpbuf_use_const(&b, data, size);
-    for (;;) {
-        /* Check if ofpbuf contains ofp header. */
-        struct ofp_header *oh = ofpbuf_at(&b, 0, sizeof *oh);
-        if (!oh) {
-            break;
-        }
-
-        /* Check if length is geq than lower bound. */
-        size_t length = ntohs(oh->length);
-        if (length < sizeof *oh) {
-            break;
-        }
-
-        /* Check if ofpbuf contains payload. */
-        size_t tail_len = length - sizeof *oh;
-        void *tail = ofpbuf_at(&b, sizeof *oh, tail_len);
-        if (!tail) {
-            break;
-        }
-
-        ofp_print(stdout, ofpbuf_pull(&b, length), length, NULL, NULL, 2);
-    }
-    ofpbuf_uninit(&b);
-    return 0;
-}
-- 
2.17.1



More information about the dev mailing list