]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add support for producing fuzzer seed corpuses from unit test data
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 31 Oct 2021 04:53:20 +0000 (00:53 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 31 Oct 2021 05:35:35 +0000 (01:35 -0400)
Support changing the fuzzer output dir mid-file

Add test.fuzzer.merge to merge all corpuses

Run the unit tests before scheduled fuzzing

This dumps the latest seed data from the unit tests into the corpus dir

Add fuzzer output dirs to the unit tests

81 files changed:
.github/workflows/ci-scheduled-fuzzing.yml
src/bin/all.mk
src/bin/fuzzer.mk
src/bin/unit_test_attribute.c
src/tests/unit/all.mk
src/tests/unit/data_types.txt
src/tests/unit/protocols/dhcpv4/base.txt
src/tests/unit/protocols/dhcpv4/error.txt
src/tests/unit/protocols/dhcpv4/packet.txt
src/tests/unit/protocols/dhcpv4/vendor.txt
src/tests/unit/protocols/dhcpv6/addresses.txt
src/tests/unit/protocols/dhcpv6/bools.txt
src/tests/unit/protocols/dhcpv6/dates.txt
src/tests/unit/protocols/dhcpv6/dns_wire_format.txt
src/tests/unit/protocols/dhcpv6/fixed_element_arrays.txt
src/tests/unit/protocols/dhcpv6/integers.txt
src/tests/unit/protocols/dhcpv6/microsoft.txt
src/tests/unit/protocols/dhcpv6/packet.txt
src/tests/unit/protocols/dhcpv6/packet_AFTR-Name-rfc6334.txt
src/tests/unit/protocols/dhcpv6/packet_client_server.txt
src/tests/unit/protocols/dhcpv6/packet_domain-list.txt
src/tests/unit/protocols/dhcpv6/packet_ia-na.txt
src/tests/unit/protocols/dhcpv6/packet_ia-pd.txt
src/tests/unit/protocols/dhcpv6/packet_ia-ta.txt
src/tests/unit/protocols/dhcpv6/packet_ntp-server.txt
src/tests/unit/protocols/dhcpv6/packet_sip-server-d.txt
src/tests/unit/protocols/dhcpv6/relay_forward.txt
src/tests/unit/protocols/dhcpv6/relay_reply.txt
src/tests/unit/protocols/dhcpv6/rfc3315.txt
src/tests/unit/protocols/dhcpv6/rfc3319.txt
src/tests/unit/protocols/dhcpv6/rfc3633.txt
src/tests/unit/protocols/dhcpv6/rfc3646.txt
src/tests/unit/protocols/dhcpv6/rfc4704.txt
src/tests/unit/protocols/dhcpv6/rfc4776.txt
src/tests/unit/protocols/dhcpv6/rfc5678.txt
src/tests/unit/protocols/dhcpv6/rfc6225.txt
src/tests/unit/protocols/dhcpv6/rfc6355.txt
src/tests/unit/protocols/dhcpv6/rfc6731.txt
src/tests/unit/protocols/dhcpv6/rfc6939.txt
src/tests/unit/protocols/dhcpv6/rfc7078.txt
src/tests/unit/protocols/dhcpv6/rfc7600.txt
src/tests/unit/protocols/dhcpv6/rfc8415.txt
src/tests/unit/protocols/dhcpv6/server.txt
src/tests/unit/protocols/dhcpv6/strings.txt
src/tests/unit/protocols/dhcpv6/tlvs.txt
src/tests/unit/protocols/dhcpv6/types.txt
src/tests/unit/protocols/dhcpv6/variable_element_arrays.txt
src/tests/unit/protocols/dns/bad-cookie.txt
src/tests/unit/protocols/dns/base.txt
src/tests/unit/protocols/dns/error.txt
src/tests/unit/protocols/dns/opt41.txt
src/tests/unit/protocols/radius/ascend.txt
src/tests/unit/protocols/radius/digest.txt
src/tests/unit/protocols/radius/enum.txt
src/tests/unit/protocols/radius/errors.txt
src/tests/unit/protocols/radius/extended.txt
src/tests/unit/protocols/radius/lucent.txt
src/tests/unit/protocols/radius/packet_port1700.txt
src/tests/unit/protocols/radius/packet_radius.txt
src/tests/unit/protocols/radius/packet_rfc3162.txt
src/tests/unit/protocols/radius/packet_rfc4675.txt
src/tests/unit/protocols/radius/packet_rfc5176-2.txt
src/tests/unit/protocols/radius/packet_rfc5176.txt
src/tests/unit/protocols/radius/packet_wireshark01.txt
src/tests/unit/protocols/radius/raw.txt
src/tests/unit/protocols/radius/rfc.txt
src/tests/unit/protocols/radius/rfc2868.txt
src/tests/unit/protocols/radius/rfc4849.txt
src/tests/unit/protocols/radius/rfc8045.txt
src/tests/unit/protocols/radius/struct.txt
src/tests/unit/protocols/radius/time_delta.txt
src/tests/unit/protocols/radius/truncate.txt
src/tests/unit/protocols/radius/tunnel.txt
src/tests/unit/protocols/radius/unit.txt
src/tests/unit/protocols/radius/vendor.txt
src/tests/unit/protocols/radius/wimax.txt
src/tests/unit/protocols/tacacs/base.txt
src/tests/unit/protocols/tacacs/typed.txt
src/tests/unit/protocols/tftp/base.txt
src/tests/unit/protocols/tftp/error.txt
src/tests/unit/protocols/vmps/base.txt

index 384b2f856103584cc0f30d7d74824fca2f1e9d8e..5f08facdce28fc53e92001900958e6ca810361b7 100644 (file)
@@ -185,6 +185,9 @@ jobs:
 
     # We walk up the tree if necessary to find a commit that builds so that we
     # will fuzz something
+    #
+    # When we find a working commit we run the unit tests to create seed data
+    # from the latest versions of the unit tests.
     - name: Find a commit that builds
       id: pick_commit
       run: |
@@ -206,6 +209,7 @@ jobs:
           git clean -fxd
         done
         echo "::set-output name=commit_id::$(git rev-parse --short HEAD)"
+        make test.unit
 
     - name: Run fuzzer tests
       run: |
index 9448c726267e7165e63cc19e73b427c55e100217..4311232facc54883e01b7f8db8228696f93e2e69 100644 (file)
@@ -63,6 +63,8 @@ fuzzer.help:
 
 test.fuzzer: $(addprefix test.fuzzer.,$(FUZZER_PROTOCOLS))
 
+test.fuzzer.merge: $(addsuffix .merge,$(addprefix test.fuzzer.,$(FUZZER_PROTOCOLS)))
+
 else
 .PHONY: fuzzer.help $(foreach X,${FUZZER_PROTOCOLS},fuzzer.${X})
 fuzzer.help $(foreach X,${FUZZER_PROTOCOLS},fuzzer.${X}) test.fuzzer:
index 609bb7a81f6b24800c2eccc531b16a52d8b9775f..339cf406baf8ef7402092c73d401c23098945841 100644 (file)
 #  then magically turns into different fuzzers.
 #
 
-TARGET         := fuzzer_$(PROTOCOL)
-SOURCES                := fuzzer.c
+TARGET                 := fuzzer_$(PROTOCOL)
+SOURCES                        := fuzzer.c
 
-TGT_PREREQS    := libfreeradius-$(PROTOCOL).a
+TGT_PREREQS            := libfreeradius-$(PROTOCOL).a
 
-TGT_LDLIBS     := $(LIBS)
+TGT_LDLIBS             := $(LIBS)
+
+FUZZER_CORPUS_DIR      := src/tests/fuzzer-corpus
 
 #
 #  Ensure that the large data file is copied from git-lfs,
@@ -33,11 +35,12 @@ TGT_LDLIBS  := $(LIBS)
 #
 .PHONY:src/tests/fuzzer-corpus/$(PROTOCOL)
 src/tests/fuzzer-corpus/$(PROTOCOL):
-       ${Q}if [ ! -e $@ ]; then \
+       ${Q}if [ ! -e $@ ] || [ ! -e "$@/.extracted" ]; then \
                if which flock > /dev/null 2>&1; then flock -F /tmp/git-lfs-mutex git -c 'lfs.fetchexclude=' -c 'lfs.fetchinclude=src/tests/fuzzer-corpus/$(PROTOCOL).tar' lfs pull; \
                else git -c 'lfs.fetchexclude=' -c 'lfs.fetchinclude=src/tests/fuzzer-corpus/$(PROTOCOL).tar' lfs pull; fi; \
                cd src/tests/fuzzer-corpus; \
                tar -xf $(PROTOCOL).tar; \
+               touch "$(PROTOCOL)/.extracted"; \
        fi
 
 .PHONY: $(FUZZER_ARTIFACTS)/$(PROTOCOL)
@@ -93,6 +96,20 @@ test.fuzzer.$(PROTOCOL): $(TEST_BIN_DIR)/fuzzer_$(PROTOCOL) | src/tests/fuzzer-c
        fi
 endif
 
+test.fuzzer.$(PROTOCOL).merge: | src/tests/fuzzer-corpus/$(PROTOCOL)
+       @echo MERGE-FUZZER-CORPUS $(PROTOCOL)
+       ${Q}[ -e "$(FUZZER_CORPUS_DIR)/$(PROTOCOL)_new" ] || mkdir "$(FUZZER_CORPUS_DIR)/$(PROTOCOL)_new"
+       ${Q}$(TEST_BIN)/fuzzer_$(PROTOCOL) \
+               -D share/dictionary \
+               -max_len=512 $(FUZZER_ARGUMENTS) \
+               -merge=1 \
+               "$(FUZZER_CORPUS_DIR)/$(PROTOCOL)_new" "$(FUZZER_CORPUS_DIR)/$(PROTOCOL)"
+       ${Q}[ ! -e "$(FUZZER_CORPUS_DIR)/$(PROTOCOL).tar" ] || rm "$(FUZZER_CORPUS_DIR)/$(PROTOCOL).tar"
+       ${Q}rm -rf "$(FUZZER_CORPUS_DIR)/$(PROTOCOL)"
+       ${Q}mv "$(FUZZER_CORPUS_DIR)/$(PROTOCOL)_new" "$(FUZZER_CORPUS_DIR)/$(PROTOCOL)"
+       ${Q}tar -C "$(FUZZER_CORPUS_DIR)" -c -f "$(FUZZER_CORPUS_DIR)/$(PROTOCOL).tar" "$(PROTOCOL)"
+       ${Q}rm -rf "$(FUZZER_CORPUS_DIR)/$(PROTOCOL)_new"
+
 test.fuzzer.$(PROTOCOL).crash: $(wildcard $(BUILD_DIR)/fuzzer/$(PROTOCOL)/crash-*) $(wildcard $(BUILD_DIR)/fuzzer/$(PROTOCOL)/timeout-*) $(wildcard $(BUILD_DIR)/fuzzer/$(PROTOCOL)/slow-unit-*) $(TEST_BIN_DIR)/fuzzer_$(PROTOCOL) | src/tests/fuzzer-corpus/$(PROTOCOL)
        $(TEST_BIN)/fuzzer_$(PROTOCOL) \
                -artifact_prefix="$(FUZZER_ARTIFACTS)/$(PROTOCOL)/" \
index 7afc9858d5cc54905857b53fb90c507d95527790..6b00f8acfcf1555b5754a7888b009c3794f9863e 100644 (file)
@@ -42,13 +42,15 @@ typedef struct request_s request_t;
 #endif
 #include <freeradius-devel/unlang/base.h>
 #include <freeradius-devel/unlang/xlat.h>
-#include <freeradius-devel/util/conf.h>
-#include <freeradius-devel/util/syserror.h>
-#include <freeradius-devel/util/log.h>
 #include <freeradius-devel/util/atexit.h>
+#include <freeradius-devel/util/base64.h>
+#include <freeradius-devel/util/conf.h>
+#include <freeradius-devel/util/dns.h>
 #include <freeradius-devel/util/file.h>
+#include <freeradius-devel/util/log.h>
 #include <freeradius-devel/util/pair_legacy.h>
-#include <freeradius-devel/util/dns.h>
+#include <freeradius-devel/util/sha1.h>
+#include <freeradius-devel/util/syserror.h>
 
 #include <ctype.h>
 
@@ -61,8 +63,10 @@ typedef struct request_s request_t;
 #endif
 
 #include <assert.h>
+#include <fcntl.h>
 #include <libgen.h>
 #include <limits.h>
+#include <sys/stat.h>
 #include <sys/wait.h>
 
 #ifndef HAVE_SANITIZER_LSAN_INTERFACE_H
@@ -192,6 +196,7 @@ typedef struct {
        fr_dict_gctx_t const    *dict_gctx;             //!< Dictionary gctx to "reset" to.
        char const              *raddb_dir;
        char const              *dict_dir;
+       char const              *fuzzer_dir;            //!< Where to write fuzzer files.
        CONF_SECTION            *features;              //!< Enabled features.
 } command_config_t;
 
@@ -214,6 +219,8 @@ typedef struct {
        fr_dict_t               *test_internal_dict;    //!< Internal dictionary of test_gctx.
        fr_dict_gctx_t const    *test_gctx;             //!< Dictionary context for test dictionaries.
 
+       int                     fuzzer_dir;             //!< File descriptor pointing to a a directory to
+                                                       ///< write fuzzer output.
        command_config_t const  *config;
 } command_file_ctx_t;
 
@@ -354,9 +361,7 @@ static void mismatch_print(command_file_ctx_t *cc, char const *command,
 /** Print hex string to buffer
  *
  */
-static inline size_t hex_print(char *out, size_t outlen, uint8_t const *in, size_t inlen) CC_HINT(nonnull);
-
-static inline size_t hex_print(char *out, size_t outlen, uint8_t const *in, size_t inlen)
+static inline CC_HINT(nonnull) size_t hex_print(char *out, size_t outlen, uint8_t const *in, size_t inlen)
 {
        char    *p = out;
        char    *end = p + outlen;
@@ -400,6 +405,45 @@ static inline size_t strerror_concat(char *out, size_t outlen)
        return p - out;
 }
 
+static inline int dump_fuzzer_data(int fd_dir, char const *text, uint8_t const *data, size_t data_len)
+{
+       fr_sha1_ctx     ctx;
+       uint8_t         digest[SHA1_DIGEST_LENGTH];
+       char            digest_str[(SHA1_DIGEST_LENGTH * 2) + 1];
+       int             file_fd;
+
+       fr_sha1_init(&ctx);
+       fr_sha1_update(&ctx, (uint8_t const *)text, strlen(text));
+       fr_sha1_final(digest, &ctx);
+
+       /*
+        *      We need to use the url alphabet as the standard
+        *      one contains forwarded slashes which openat
+        *      doesn't like.
+        */
+       fr_base64_encode_nstd(&FR_SBUFF_OUT(digest_str, sizeof(digest_str)), &FR_DBUFF_TMP(digest, sizeof(digest)),
+                             false, fr_base64_url_alphabet_encode);
+
+       file_fd = openat(fd_dir, digest_str, O_RDWR | O_CREAT | O_TRUNC);
+       if (file_fd < 0) {
+               fr_strerror_printf("Failed creating corpus input file \"%s\": %s", digest_str, fr_syserror(errno));
+               return -1;
+       }
+
+       if (fchmod(file_fd, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) < 0) {
+               fr_strerror_printf("Failed setting permissions for \"%s\": %s", digest_str, fr_syserror(errno));
+               return -1;
+       }
+
+       if (write(file_fd, data, data_len) != (ssize_t)data_len) {
+               fr_strerror_printf("Failed writing to corpus input file \"%s\": %s", digest_str, fr_syserror(errno));
+               unlinkat(fd_dir, digest_str, 0);
+               return -1;
+       }
+
+       return 0;
+}
+
 /*
  *     End of hacks for xlat
  *
@@ -1548,6 +1592,11 @@ static size_t command_encode_dns_label(command_result_t *result, command_file_ct
                if (next) *next = 0;
        }
 
+       if ((cc->fuzzer_dir >= 0) &&
+           (dump_fuzzer_data(cc->fuzzer_dir, p, cc->buffer_start, enc_p - cc->buffer_start) < 0)) {
+               RETURN_COMMAND_ERROR();
+       }
+
        RETURN_OK(hex_print(data, COMMAND_OUTPUT_MAX, cc->buffer_start, enc_p - cc->buffer_start));
 }
 
@@ -1744,6 +1793,11 @@ static size_t command_encode_pair(command_result_t *result, command_file_ctx_t *
 
        CLEAR_TEST_POINT(cc);
 
+       if ((cc->fuzzer_dir >= 0) &&
+           (dump_fuzzer_data(cc->fuzzer_dir, p, cc->buffer_start, enc_p - cc->buffer_start) < 0)) {
+               RETURN_COMMAND_ERROR();
+       }
+
        RETURN_OK(hex_print(data, COMMAND_OUTPUT_MAX, cc->buffer_start, enc_p - cc->buffer_start));
 }
 
@@ -1819,6 +1873,11 @@ static size_t command_encode_proto(command_result_t *result, command_file_ctx_t
 
        CLEAR_TEST_POINT(cc);
 
+       if ((cc->fuzzer_dir >= 0) &&
+           (dump_fuzzer_data(cc->fuzzer_dir, p, cc->buffer_start, slen) < 0)) {
+               RETURN_COMMAND_ERROR();
+       }
+
        RETURN_OK(hex_print(data, COMMAND_OUTPUT_MAX, cc->buffer_start, slen));
 }
 
@@ -1834,6 +1893,60 @@ static size_t command_eof(UNUSED command_result_t *result, UNUSED command_file_c
        return 0;
 }
 
+/** Enable fuzzer output
+ *
+ * Any commands that produce potentially useful corpus seed data will write that out data
+ * to files in the specified directory, using the md5 of the text input at as the file name.
+ *
+ */
+static size_t command_fuzzer_out(command_result_t *result, command_file_ctx_t *cc,
+                                UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
+{
+       int     fd;
+       struct  stat sdir;
+       char    *fuzzer_dir;
+
+       /*
+        *      Close any open fuzzer output dirs
+        */
+       if (cc->fuzzer_dir >= 0) {
+               close(cc->fuzzer_dir);
+               cc->fuzzer_dir = -1;
+       }
+
+       if (in[0] == '\0') {
+               fr_strerror_const("Missing directory name");
+               RETURN_PARSE_ERROR(0);
+       }
+
+       fuzzer_dir = talloc_asprintf(cc->tmp_ctx, "%s/%s",
+                                    cc->config->fuzzer_dir ? cc->config->fuzzer_dir : cc->path, in);
+       fd = open(fuzzer_dir, O_RDONLY);
+       if (fd < 0) {
+               if (mkdir(fuzzer_dir, 0777) == 0) {
+                       fd = open(fuzzer_dir, O_RDONLY);
+                       if (fd >= 0) goto stat;
+               }
+               fr_strerror_printf("fuzzer-out \"%s\" doesn't exit: %s", fuzzer_dir, fr_syserror(errno));
+               RETURN_PARSE_ERROR(0);
+       }
+
+stat:
+       if (fstat(fd, &sdir) < 0) {
+               fr_strerror_printf("failed statting fuzzer-out \"%s\": %s", fuzzer_dir, fr_syserror(errno));
+               RETURN_PARSE_ERROR(0);
+       }
+
+       if (!(sdir.st_mode & S_IFDIR)) {
+               fr_strerror_printf("fuzzer-out \"%s\" is not a directory", fuzzer_dir);
+               RETURN_PARSE_ERROR(0);
+       }
+       cc->fuzzer_dir = fd;
+       talloc_free(fuzzer_dir);
+
+       return 0;
+}
+
 /** Exit gracefully with the specified code
  *
  */
@@ -2220,7 +2333,7 @@ static size_t command_tmpl_rules(command_result_t *result, command_file_ctx_t *c
        return fr_sbuff_used(&sbuff);
 }
 
-static size_t command_value_box_normalise(command_result_t *result, UNUSED command_file_ctx_t *cc,
+static size_t command_value_box_normalise(command_result_t *result, command_file_ctx_t *cc,
                                          char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 {
        fr_value_box_t *box = talloc_zero(NULL, fr_value_box_t);
@@ -2286,6 +2399,23 @@ static size_t command_value_box_normalise(command_result_t *result, UNUSED comma
                RETURN_OK_WITH_ERROR();
        }
 
+       /*
+        *      Store <type><value str...>
+        */
+       if (cc->fuzzer_dir >= 0) {
+               char fuzzer_buffer[1024];
+               char *fuzzer_p = fuzzer_buffer, *fuzzer_end = fuzzer_p + sizeof(fuzzer_buffer);
+
+               *fuzzer_p++ = (uint8_t)type;    /* Fuzzer uses first byte for type */
+
+               strlcpy(fuzzer_p, data, slen > fuzzer_end - fuzzer_p ? fuzzer_end - fuzzer_p : slen);
+
+               if (dump_fuzzer_data(cc->fuzzer_dir, fuzzer_buffer,
+                                    (uint8_t *)fuzzer_buffer, strlen(fuzzer_buffer)) < 0) {
+                       RETURN_COMMAND_ERROR();
+               }
+       }
+
        talloc_free(box2);
        talloc_free(box);
        RETURN_OK(slen);
@@ -2496,6 +2626,11 @@ static fr_table_ptr_sorted_t     commands[] = {
                                        .usage = "exit[ <num>]",
                                        .description = "Exit with the specified error number.  If no <num> is provided, process will exit with 0"
                                }},
+       { L("fuzzer-out"),      &(command_entry_t){
+                                       .func = command_fuzzer_out,
+                                       .usage = "fuzzer-out <dir>",
+                                       .description = "Write encode-pair, encode-proto, and encode-dns-label output, and value input as separate files in the specified directory.  Text input will be sha1 hashed and base64 encoded to create the filename",
+                               }},
        { L("load-dictionary "),&(command_entry_t){
                                        .func = command_load_dictionary,
                                        .usage = "load-dictionary <name> [<dir>]",
@@ -2662,6 +2797,10 @@ static int _command_ctx_free(command_file_ctx_t *cc)
                fr_perror("unit_test_attribute");
                return -1;
        }
+       if (cc->fuzzer_dir >= 0) {
+               close(cc->fuzzer_dir);
+               cc->fuzzer_dir = -1;
+       }
        return 0;
 }
 
@@ -2711,6 +2850,8 @@ static command_file_ctx_t *command_ctx_alloc(TALLOC_CTX *ctx,
        fr_dict_global_ctx_dir_set(cc->path);   /* Load new dictionaries relative to the test file */
        fr_dict_global_ctx_set(cc->config->dict_gctx);
 
+       cc->fuzzer_dir = -1;
+
        return cc;
 }
 
@@ -2730,6 +2871,11 @@ static void command_ctx_reset(command_file_ctx_t *cc, TALLOC_CTX *ctx)
        if (fr_dict_internal_afrom_file(&cc->test_internal_dict, FR_DICTIONARY_INTERNAL_DIR, __FILE__) < 0) {
                fr_perror("Failed loading test dict_gctx internal dictionary");
        }
+
+       if (cc->fuzzer_dir >= 0) {
+               close(cc->fuzzer_dir);
+               cc->fuzzer_dir = -1;
+       }
 }
 
 static int process_file(bool *exit_now, TALLOC_CTX *ctx, command_config_t const *config,
@@ -3081,7 +3227,7 @@ int main(int argc, char *argv[])
        default_log.fd = STDOUT_FILENO;
        default_log.print_level = false;
 
-       while ((c = getopt(argc, argv, "cd:D:fxMhr:")) != -1) switch (c) {
+       while ((c = getopt(argc, argv, "cd:D:F:fxMhr:")) != -1) switch (c) {
                case 'c':
                        do_commands = true;
                        break;
@@ -3094,6 +3240,10 @@ int main(int argc, char *argv[])
                        config.dict_dir = optarg;
                        break;
 
+               case 'F':
+                       config.fuzzer_dir = optarg;
+                       break;
+
                case 'f':
                        do_features = true;
                        break;
index 36ff543eccf2a120c9ec1ee9e3484a6b97e17c1c..5a156ccb96eb22f7450ae559a06e08565d40e506 100644 (file)
@@ -59,8 +59,8 @@ test.unit.condition: $(addprefix $(OUTPUT)/,$(filter condition/%.txt,$(FILES)))
 $(OUTPUT)/%: $(DIR)/% $(TEST_BIN_DIR)/unit_test_attribute
        $(eval DIR:=${top_srcdir}/src/tests/unit)
        @echo "UNIT-TEST $(lastword $(subst /, ,$(dir $@))) $(basename $(notdir $@))"
-       ${Q}if ! $(TEST_BIN)/unit_test_attribute -D ./share/dictionary -d $(DIR) -r "$@" $<; then \
-               echo "TZ=GMT $(TEST_BIN)/unit_test_attribute -D ./share/dictionary -d $(DIR) -r \"$@\" $<"; \
+       ${Q}if ! $(TEST_BIN)/unit_test_attribute -F ./src/tests/fuzzer-corpus -D ./share/dictionary -d $(DIR) -r "$@" $<; then \
+               echo "TZ=GMT $(TEST_BIN)/unit_test_attribute -F ./src/tests/fuzzer-corpus -D ./share/dictionary -d $(DIR) -r \"$@\" $<"; \
                rm -f $(BUILD_DIR)/tests/test.unit; \
                exit 1; \
        fi
index 7de28cbd30bdab6fb9c0d7fabcbe6071ee553dc3..1d8876831ea631db1b867027c475d5620ded07ac 100644 (file)
@@ -1,3 +1,5 @@
+fuzzer-out util
+
 #
 #  Parse / print data types
 #
@@ -146,6 +148,11 @@ match Aug 21 2019 07:43:03 UTC
 #date 2019-08-21T07:40:31-04:00
 #data foo
 
+#
+#  Switch fuzzer output to DNS corpus
+#
+fuzzer-out dns
+
 #
 #  DNS labels
 #
@@ -231,4 +238,4 @@ encode-dns-label www_foo.com
 match Invalid character 0x5f in label
 
 count
-match 116
+match 118
index 1f14c2ee01cd7df546901d47906b2f7e64889c25..1ac736d49f6572a436572b9524f03bd976c0083e 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto dhcpv4
 proto-dictionary dhcpv4
+fuzzer-out dhcpv4
 
 #
 #  DHCP TLV types
@@ -106,4 +107,4 @@ decode-pair -
 match Relay-Agent-Information.Circuit-Id = 0x3132333435363738396131323334353637383962313233343536373839633132333435363738396431323334353637383965313233343536373839663132333435363738396731323334353637383968313233343536373839613132333435363738396131323334353637383961313233343536373839613132333435363738396131323334353637383961313233343536373839613132333435363738396131323334353637383961313233343536373839613132333435363738396131323334353637383961313233343536373839613132333435363738396131323334353637383961313233343536373839613132333435363738396178797a
 
 count
-match 44
+match 45
index 1812a83552eed4348ea5d260946ac6046c373b5a..548ecc6b6471a69215f75be66734d1b78bef88a0 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto dhcpv4
 proto-dictionary dhcpv4
+fuzzer-out dhcpv4
 
 decode-pair 7d 7d 7d 7d 7d 7d 7d 7d 37 37 37 37 37 37 37 37 3f 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 be 37 37 37 2a 30 30 30 30 30 74 30 30 30 30 30 30 32 1d 00 37 31 37 38 30 38 32 35 37 33 30 36 31 37 00 04 00 00 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa 00 00 00 00 00 00 00 20 00 37 37 37 37 37 37 37 37 00 00 1a 29 00 00 00 00 63 00 01 00 00
 match raw.V-I-Vendor-Specific.2105376125.125 = 0x7d7d37373737373737373f37373737373737373737373737373737373737373737373737be3737372a303030303074303030303030321d00373137383038323537333036313700040000370000000000000000000000000000000000fa000000000000002000373737373737373700001a2900000000630001
@@ -41,4 +42,4 @@ decode-pair 03 07 7f 00 00 01 7f 00 00
 match raw.Router-Address = 0x7f0000017f0000
 
 count
-match 20
+match 21
index 83bd81c5bd599e0cfef9f9765ec78d993ed93650..d8b7415bc47f6512380eec5c7f63bea4f49ee825 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto dhcpv4
 proto-dictionary dhcpv4
+fuzzer-out dhcpv4
 
 encode-proto Opcode = Client-Message, Hardware-Type = Ethernet, Hardware-Address-Length = 6, Hop-Count = 0, Transaction-Id = 0, Number-of-Seconds = 0, Flags = 0, Client-IP-Address = 0.0.0.0, Your-IP-Address = 0.0.0.0, Server-IP-Address = 0.0.0.0, Gateway-IP-Address = 10.11.19.3, Client-Hardware-Address = 44:48:42:66:00:5a, Message-Type = Discover, Network-Subnet = 10.11.19.3/32
 match 01 01 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 0b 13 03 44 48 42 66 00 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 35 01 01 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@@ -11,4 +12,4 @@ decode-proto -
 match Opcode = Client-Message, Hardware-Type = Ethernet, Hardware-Address-Length = 6, Hop-Count = 0, Transaction-Id = 0, Number-of-Seconds = 0, Flags = 0, Client-IP-Address = 0.0.0.0, Your-IP-Address = 0.0.0.0, Server-IP-Address = 0.0.0.0, Gateway-IP-Address = 10.11.19.3, Client-Hardware-Address = 44:48:42:66:00:5a, Message-Type = Discover, Network-Subnet = 10.11.19.3/32
 
 count
-match 6
+match 7
index 3e8328ac17fc96bd0578958cfe2e1a17631e66a4..3761dacb50daad3bb95a2dc95f8aaee588a7ef28 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto dhcpv4
 proto-dictionary dhcpv4
+fuzzer-out dhcpv4
 
 encode-pair V-I-Vendor-Specific.Cisco.Indirect-Image-Filename = "aa.txt"
 match 7d 0d 00 00 00 09 08 05 06 61 61 2e 74 78 74
@@ -21,9 +22,9 @@ match 7d 0e 00 00 0d e9 09 01 01 01 02 01 02 03 01 03
 
 #
 #  PEN + option_len, where option_len 09 > end of attribute
-# 
+#
 decode-pair 7d 0d 00 00 00 09 09 05 06 61 61 2e 74 78 74
 match raw.V-I-Vendor-Specific.Cisco.5 = 0x09050661612e747874
 
 count
-match 14
+match 15
index ea608c1a33532a1b6d01a76fefe38bd0f06a5ff5..d55ea98f53ae644debe9b19269fad39114e09fff 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Encode ipv6address
@@ -89,4 +90,4 @@ decode-pair -
 match Unicast = 2001:db8:85a3:cade:cafe:8a2e:370:7334
 
 count
-match 42
+match 43
index 4c17578835b06e3070607b61d79d0b355f1ab806..b60f9174811f76746710f4fc5dfc842792aed21b 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  True values are encoded by using an empty attribute.
@@ -20,9 +21,9 @@ decode-pair -
 match Rapid-Commit = yes
 
 encode-pair Rapid-Commit = no
-match 
+match
 
 # And we can't decode nothing...
 
 count
-match 8
+match 9
index 2a08a4ebc5a41220e5eb59e0fdaa0bffee9d7214..631adc02181665a984c31886dfb5c0883cbdfeaf 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Date. Like a 32bit unix timestamp but starts from 1st Jan 2000 instead of 1st Jan 2000
@@ -44,4 +45,4 @@ decode-pair -
 match Failover-Expiration-Time = "Jan  1 2000 00:00:01 UTC"
 
 count
-match 20
+match 21
index edaee151b75490a2fe0e352020b42604b77c68dd..39252d8751ad16120b8d45602252ea33cbb20198 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 encode-pair SIP-Server-Domain-Name-List = "foo.ca"
 match 00 15 00 08 03 66 6f 6f 02 63 61 00
@@ -33,4 +34,4 @@ decode-pair -
 match SIP-Server-Domain-Name-List = "www.example.com", SIP-Server-Domain-Name-List = "ftp.example.com", SIP-Server-Domain-Name-List = "ns.example.com"
 
 count
-match 18
+match 19
index 8c0403af03f1cfe6ec2f0c1921ca16948de396d7..923abf215972e0c78dfcce9bd4b3b685d93604b6 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Array of 16bit integers
@@ -45,4 +46,4 @@ decode-pair -
 match SIP-Server-Address = 2001:db8:85a3::8a2e:370:7334, SIP-Server-Address = 2001:db8:85a3::8a2e:370:7335, SIP-Server-Address = 2001:4860:4860::8888
 
 count
-match 18
+match 19
index d6bd450c9d57662019618978dc6a53f2c4b13aaf..220a050cde1c0a15237684fb404612c94292414c 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  1 byte unsigned integer (uint8)
@@ -42,4 +43,4 @@ decode-pair -
 match Information-Refresh-Time = 99
 
 count
-match 18
+match 19
index 61a7bb7d732b26eb0bf599eaaa3abe6f58d47a71..bb2e59c08444c607388b6c5f6fd6ed223ecb16be 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Microsoft VSAs. We have no idea what the contents are, and the documentation doesn't say.
@@ -18,4 +19,4 @@ decode-pair -
 match Vendor-Opts.Microsoft.Rogue-Detection-Request = 0x00
 
 count
-match 6
+match 7
index f8864f534e4d8fbd6d32eed13d84de76a360bacb..dd2a9fd189da36ebdcddee4bf4e859d3f1c3c84f 100644 (file)
@@ -6,6 +6,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 encode-pair IA-Addr.IPv6-Address = 2001:db8::c:78eb, IA-Addr.Valid-Lifetime = 3600
 match 00 05 00 18 20 01 0d b8 00 00 00 00 00 00 00 00 00 0c 78 eb 00 00 00 00 00 00 0e 10
@@ -46,4 +47,4 @@ decode-proto -
 match Packet-Type = Request, Transaction-ID = 0xabcdef, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f
 
 count
-match 18
+match 19
index 9e27205e037b1942739d7cceeeb0974af01c3902..c022c3d9f337b961567244115bfb57f368330f60 100644 (file)
@@ -11,6 +11,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  1.
@@ -216,4 +217,4 @@ encode-proto -
 match 07 1e 29 1d 00 19 00 29 02 03 04 05 00 00 00 96 00 00 00 fa 00 1a 00 19 00 00 00 fa 00 00 01 2c 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 3f 4e f0 00 11 22 33 44 55 00 07 00 01 0a 00 17 00 10 2a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 40 00 18 09 61 66 74 72 2d 6e 61 6d 65 08 6d 79 64 6f 6d 61 69 6e 03 6e 65 74 00
 
 count
-match 18
+match 19
index 8209cc7a254af9bc8105fb9953ef2bee36c7ff19..8481726c468ae5822b11e10cd322d1cf2723789a 100644 (file)
@@ -8,6 +8,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Client <-> Server
@@ -124,4 +125,4 @@ decode-proto -
 match Packet-Type = Reply, Transaction-ID = 0x00b33f, Client-ID.DUID = UUID, Client-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Server-ID.DUID = UUID, Server-ID.DUID.UUID.Value = 0x000102030405060708090a0b0c0d0e0f, Status-Code.Value = Success, Status-Code.Message = "Release received."
 
 count
-match 26
+match 27
index 670399877f8a3801b556915d84575b0644de6cfb..7fa9ee98c6fb03a19abadad63b6a8c8c632c7e72 100644 (file)
@@ -11,6 +11,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  1.
@@ -48,4 +49,4 @@ encode-proto -
 match 07 aa 56 ce 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 18 00 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 05 73 61 6c 65 73 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 03 65 6e 67 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00
 
 count
-match 6
+match 7
index 28da542da94bd54a05d0a62b6e6fc6c55d1647e4..87cda6fecba0bfe863c57923798fed5d0419c627 100644 (file)
@@ -11,6 +11,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  1.
@@ -177,5 +178,5 @@ decode-proto 07 2f fd d1 00 03 00 28 02 03 04 05 00 00 0e 10 00 00 15 18 00 05 0
 match Packet-Type = Reply, Transaction-ID = 0x2ffdd1, IA-NA.IAID = 33752069, IA-NA.T1 = 3600, IA-NA.T2 = 5400, IA-NA.Options = { IA-Addr.IPv6-Address = 2a00:1:1:200:38e6:b22e:c440:acdf, IA-Addr.Preferred-Lifetime = 4500, IA-Addr.Valid-Lifetime = 7200 }, Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05, Server-ID.DUID = LLT, Server-ID.DUID.LLT.Hardware-Type = Ethernet, Server-ID.DUID.LLT.Time = "Nov 26 2012 15:34:36 UTC", Server-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:11:22:33:44:55
 
 count
-match 10
+match 11
 
index 4b200a75220cab4a9020fada0ffeec99464dccd8..116bcf3b881812facc93c3c970ed86c34707f2dc 100644 (file)
@@ -11,6 +11,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  1.
@@ -193,5 +194,5 @@ encode-proto -
 match 07 12 b0 8a 00 19 00 29 02 03 04 05 00 00 0e 10 00 00 15 18 00 1a 00 19 00 00 11 94 00 00 1c 20 38 2a 00 00 01 00 01 01 00 00 00 00 00 00 00 00 00 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 49 99 00 11 22 33 44 55
 
 count
-match 18
+match 19
 
index cf4400c3a5b499ea1f086069edfe6b352dd0c84a..eaa8d5f415d9b39d49fb6f3adef985e5b4991baa 100644 (file)
@@ -11,6 +11,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  1.
@@ -181,4 +182,4 @@ encode-proto -
 match 07 2b 0e 45 00 04 00 20 02 03 04 05 00 05 00 18 2a 00 00 01 00 01 02 00 5d a2 f9 20 84 c4 88 cc 00 00 11 94 00 00 1c 20 00 01 00 0a 00 03 00 01 00 01 02 03 04 05 00 02 00 0e 00 01 00 01 18 46 47 f0 00 11 22 33 44 55
 
 count
-match 18
+match 19
index c203e4ad588f1aece9589991d98a58bb24439aab..12beec41de40eb05cfb39d4c86c6a8896d9fcc8d 100644 (file)
@@ -11,6 +11,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  1.
@@ -48,4 +49,4 @@ encode-proto -
 match 07 f6 9b 57 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 38 00 3d 00 01 00 10 2a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 10 ff 05 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 03 00 11 03 6e 74 70 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00
 
 count
-match 6
+match 7
index d26f88cd823ce1a15d7fa422a9ca0d0529beba1f..0869e786c38899f47bfa62c54f72783de96763cb 100644 (file)
@@ -11,6 +11,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  1.
@@ -48,4 +49,4 @@ encode-proto -
 match 07 68 90 d8 00 01 00 0e 00 01 00 01 18 f0 0b 3f 00 0c 29 38 f3 68 00 02 00 0e 00 01 00 01 18 ef 95 1b 00 0c 29 9b a1 53 00 15 00 3e 04 73 69 70 31 09 6d 79 2d 64 6f 6d 61 69 6e 03 6e 65 74 00 04 73 69 70 32 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 04 73 69 70 33 03 73 75 62 09 6d 79 2d 64 6f 6d 61 69 6e 03 6f 72 67 00
 
 count
-match 6
+match 7
index 6e9ec0fe9b76ce67e41a95394ccec354bbf22012..a958b24b12a14bb7e99735c80dc61cda06506c53 100644 (file)
@@ -9,6 +9,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 decode-proto 0c0126058600000680000000000000000000fe80000000000000025056fffea353fe000900c40c0000000000000000000000000000000000fe80000000000000025056fffea353fe0012001c4c41424f4c54322065746820312f312f30352f30312f32382f312f310009007e011141d70001000e0001000126b1b7f1005056a353fe0012001c4c41424f4c54322065746820312f312f30352f30312f32382f312f310006000200180008000200000003002856a353fe00000e1000001518000500182605860000064000000000000000000100001c2000002a300019000c56a353fe00000e1000001518002500120000197f0001000126b1b7f1005056a353fe0011002a0000197f0001000a4c41424f4c54322d6e610002000a4c41424f4c54322d7064000300013f0004000140
 match Packet-Type = Relay-Forward, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Relay-Message = { Packet-Type = Relay-Forward, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Solicit, Transaction-ID = 0x1141d7, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jul 27 2020 16:06:09 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:50:56:a3:53:fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA.IAID = 1453544446, IA-NA.T1 = 3600, IA-NA.T2 = 5400, IA-NA.Options = { IA-Addr.IPv6-Address = 2605:8600:6:4000::1, IA-Addr.Preferred-Lifetime = 7200, IA-Addr.Valid-Lifetime = 10800 }, IA-PD.IAID = 1453544446, IA-PD.T1 = 3600, IA-PD.T2 = 5400 } }, Relay-Agent-Remote-ID.Vendor = 6527, Relay-Agent-Remote-ID.Value = 0x0001000126b1b7f1005056a353fe, Vendor-Opts.Nokia-SR.WAN-Pool = "LABOLT2-na", Vendor-Opts.Nokia-SR.PFX-Pool = "LABOLT2-pd", Vendor-Opts.Nokia-SR.PFX-Len = 63, Vendor-Opts.Nokia-SR.Reserved-NA-Len = 64
@@ -23,4 +24,4 @@ decode-proto -
 match Packet-Type = Relay-Forward, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Relay-Message = { Packet-Type = Relay-Forward, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Solicit, Transaction-ID = 0x1141d7, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jul 27 2020 16:06:09 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:50:56:a3:53:fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Option-Request = Domain-List, Elapsed-Time = 0, IA-NA.IAID = 1453544446, IA-NA.T1 = 3600, IA-NA.T2 = 5400, IA-NA.Options = { IA-Addr.IPv6-Address = 2605:8600:6:4000::1, IA-Addr.Preferred-Lifetime = 7200, IA-Addr.Valid-Lifetime = 10800 }, IA-PD.IAID = 1453544446, IA-PD.T1 = 3600, IA-PD.T2 = 5400 } }, Relay-Agent-Remote-ID.Vendor = 6527, Relay-Agent-Remote-ID.Value = 0x0001000126b1b7f1005056a353fe, Vendor-Opts.Nokia-SR.WAN-Pool = "LABOLT2-na", Vendor-Opts.Nokia-SR.PFX-Pool = "LABOLT2-pd", Vendor-Opts.Nokia-SR.PFX-Len = 63, Vendor-Opts.Nokia-SR.Reserved-NA-Len = 64
 
 count
-match 8
+match 9
index 5da89e621e5075ed6c0e0e33eaea52306685662f..8eef590f75275579604607aedb1ed8643dc9a1bb 100644 (file)
@@ -9,6 +9,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 encode-proto Packet-Type = Relay-Reply, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x6c61672d373a3130352e313238, Relay-Message = { Packet-Type = Relay-Reply, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Advertise, Transaction-ID = 0x950806, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jul 27 2020 16:06:09 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:50:56:a3:53:fe } }
 match 0d 01 26 05 86 00 00 06 80 00 00 00 00 00 00 00 00 00 fe 80 00 00 00 00 00 00 02 50 56 ff fe a3 53 fe 00 12 00 0d 6c 61 67 2d 37 3a 31 30 35 2e 31 32 38 00 09 00 5c 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe 80 00 00 00 00 00 00 02 50 56 ff fe a3 53 fe 00 12 00 1c 4c 41 42 4f 4c 54 32 20 65 74 68 20 31 2f 31 2f 30 35 2f 30 31 2f 32 38 2f 31 2f 31 00 09 00 16 02 95 08 06 00 01 00 0e 00 01 00 01 26 b1 b7 f1 00 50 56 a3 53 fe
@@ -17,4 +18,4 @@ decode-proto -
 match Packet-Type = Relay-Reply, Hop-Count = 1, Relay-Link-Address = 2605:8600:6:8000::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x6c61672d373a3130352e313238, Relay-Message = { Packet-Type = Relay-Reply, Hop-Count = 0, Relay-Link-Address = ::, Relay-Peer-Address = fe80::250:56ff:fea3:53fe, Interface-ID = 0x4c41424f4c54322065746820312f312f30352f30312f32382f312f31, Relay-Message = { Packet-Type = Advertise, Transaction-ID = 0x950806, Client-ID.DUID = LLT, Client-ID.DUID.LLT.Hardware-Type = Ethernet, Client-ID.DUID.LLT.Time = "Jul 27 2020 16:06:09 UTC", Client-ID.DUID.LLT.Hardware-Type.Ethernet.Address = 00:50:56:a3:53:fe } }
 
 count
-match 6
+match 7
index 4f211563193fabc3b7855f4d5dbb2a5c100a7a19..aee1f0c4f88c75c01a054cf7abc7eccae0bb69c2 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Encoding an option header:
@@ -145,4 +146,4 @@ decode-pair 00 02 00 0a 00 03 00 ff d3 4d 00 c0 ff ee
 match Server-ID.DUID = LL, raw.Server-ID.DUID.LL = 0x00ffd34d00c0ffee
 
 count
-match 28
+match 29
index 041dc7a3711280d736ed06c9f2c05d2dc70d2975..47a86fc1cf031a678a5241db0ca66a7229c48434 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  3.1  SIP Servers Domain Name List
@@ -77,4 +78,4 @@ decode-pair -
 match SIP-Server-Address = 2001:db8:85a3::8a2e:370:7334, SIP-Server-Address = 2001:db8:85a3::8a2e:370:7335, SIP-Server-Address = 2001:4860:4860::8888
 
 count
-match 30
+match 31
index 78c3195edd3927a6499198e5c3d9e653c79e541c..14d647dd8cc88cd3bfc503ca0373ce16c9a0e619 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 encode-pair IA-PD.IAID = 0, IA-PD.T1 = 0, IA-PD.T2 = 0, IA-PD.Options = { Preference = 1 }
 match 00 19 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 01 01
@@ -21,4 +22,4 @@ decode-pair -
 match IA-PD.IAID = 0, IA-PD.T1 = 0, IA-PD.T2 = 0, IA-PD.Options = { IA-PD-Prefix.Preferred-Lifetime = 4500, IA-PD-Prefix.Valid-Lifetime = 7200, IA-PD-Prefix.IPv6-Prefix = 2a00:1:1:100::/56 }
 
 count
-match 10
+match 11
index df2fa3d63ca7074165afe044befa4b9c2c879bfc..c7ce763f51d5c4318f57c2f536e29056e0129da8 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Encoding an option header:
@@ -89,4 +90,4 @@ encode-pair Domain-List = "mydomain1.com", Domain-List = "mydomain2.lan", Domain
 match 00 18 00 31 09 6d 79 64 6f 6d 61 69 6e 31 03 63 6f 6d 00 09 6d 79 64 6f 6d 61 69 6e 32 03 6c 61 6e 00 04 63 6f 72 70 09 6d 79 64 6f 6d 61 69 6e 33 02 63 6f 00
 
 count
-match 6
+match 7
index 8f93412f5157ddd137c1ac0ba5c0a1c94c4fc0c9..60e7567574547f553507414b618a4095c4cfd4d6 100644 (file)
@@ -10,6 +10,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  4.  The DHCPv6 Client FQDN Option
@@ -53,4 +54,4 @@ decode-pair -
 match Client-FQDN.Reserved = 0, Client-FQDN.No-Server-Update = yes, Client-FQDN.Server-Override = no, Client-FQDN.Server-Update = no, Client-FQDN.Domain-Name = "tapioca01"
 
 count
-match 10
+match 11
index 686a4bebacdcdf5f27d33bfb637bf6957949c413..ec226776337b656bf8ab51aab2815fabeec0488c 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  A1 = "ON"
@@ -19,4 +20,4 @@ match Geoconf-Civic.What = Client-Location, Geoconf-Civic.Country-Code = "CA", G
 #match Geoconf-Civic = { What = Client-Location, Country-Code = "CA", Civic-Address-Elements = 0x01024f4e }
 
 count
-match 6
+match 7
index 0238a128d3caaa9076560b49835ad5e1f2732fe0..3cc4e182d6c11c6683894db30d94d21c88403069 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 encode-pair MOD-Address-List.IS = ::1
 match 00 36 00 14 00 01 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
@@ -27,4 +28,4 @@ encode-pair MOD-Address-List = { IS = ::1, CS = ::2 }
 match 00 36 00 28 00 01 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02
 
 count
-match 12
+match 13
index f5da41d3a30c4c8f9e39bdded542c7bd31573d22..0913ce3744d9c00c0a404c4dfe1350dfb416313a 100644 (file)
@@ -10,6 +10,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  The format of the DHCPv6 [RFC3315] GeoLoc Option is as follows:
@@ -89,4 +90,4 @@ match 00 3f 00 10 04 42 35 af a6 04 c2 97 64 f6 10 40 00 00 63 42
 decode-pair -
 match Geolocation.Latitude-Uncertainty = 1, Geolocation.Latitude = 1110814630, Geolocation.Longitude-Uncertainty = 1, Geolocation.Longitude = 3264701686, Geolocation.Altitude-Type = Meters, Geolocation.Altitude-Uncertainty = 1, Geolocation.Altitude = 99, Geolocation.Version = 1, Geolocation.Reserved = 0, Geolocation.Datum = NAD83-NAVD88
 count
-match 6
+match 7
index fa7b1aef40658cefc4a483bbada0503b662826a4..e56c08dc210f592350b1327bf3b640d9a887ee68 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Encoding an option header:
@@ -113,4 +114,4 @@ decode-pair 00 02 00 10 00 04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
 match Server-ID.DUID = UUID, raw.Server-ID.DUID.UUID = 0x000102030405060708090a0b0c0d
 
 count
-match 36
+match 37
index 2d7da73b8dce53f2b75479f8a090e32beca17ced..b8820bb30f78e7645b725cb8973e5ef1b58b21b4 100644 (file)
@@ -10,6 +10,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #    0                   1                   2                   3
 #    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
@@ -43,4 +44,4 @@ decode-pair -
 match RDNSS-Selection.DNS-Recursive-Name-Server = ::1, RDNSS-Selection.Preference = High, RDNSS-Selection.FQDN = "ns1.example.com", RDNSS-Selection.FQDN = "ns2.example.com"
 
 count
-match 10
+match 11
index ebe9f9115e4a7aa600e802fa0b3c02ee0417d80f..2cfee17f6f4b59610f2af8ec8c503c5b546d63a9 100644 (file)
@@ -10,6 +10,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  4.  DHCPv6 Client Link-Layer Address Option
@@ -38,7 +39,7 @@ proto-dictionary dhcpv6
 #
 
 # type: Ethernet
-encode-pair Client-Link-Layer.Type = Ethernet, Client-Link-Layer.Type.Ethernet.Address = c0:ff:ee:c0:ff:ee 
+encode-pair Client-Link-Layer.Type = Ethernet, Client-Link-Layer.Type.Ethernet.Address = c0:ff:ee:c0:ff:ee
 match 00 4f 00 08 00 01 c0 ff ee c0 ff ee
 
 decode-pair 00 4f 00 08 00 01 c0 ff ee c0 ff ee
@@ -52,4 +53,4 @@ decode-pair -
 match Client-Link-Layer.Type = Lanstar, Client-Link-Layer.Type.Lanstar.Address = 0xc0ffeec0ffee
 
 count
-match 10
+match 11
index 9e78ba7ea9de081d429c30632e0c14431f3c05e7..7b31fadd9daeefa8f0973e097c0fd390d1786bb4 100644 (file)
@@ -10,6 +10,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  2.  Address Selection Options
@@ -100,4 +101,4 @@ decode-pair -
 match Address-Selection.Reserved = 0, Address-Selection.Automatic-Row-Addition = no, Address-Selection.Privacy-Reference = yes, Address-Selection.Table-Rows = { Address-Selection-Table.Label = 17, Address-Selection-Table.Precedence = 8, Address-Selection-Table.Prefix = ::ffff:0.0.0.16/128 }
 
 count
-match 6
+match 7
index 00986bc9bdf5ee3a6c93337ab3d33f6526bd8785..bf74a298e6f5e31cf1a874931d0266f919a5de4b 100644 (file)
@@ -8,6 +8,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #   0                   1                   2                   3
@@ -84,4 +85,4 @@ decode-pair -
 match IP4RD-Non-Map-Rule.Traffic-Class-Provided = yes, IP4RD-Non-Map-Rule.Reserved = 0, IP4RD-Non-Map-Rule.Hub-And-Spoke = yes, IP4RD-Non-Map-Rule.Domain-PMTU = 31
 
 count
-match 14
+match 15
index 74a8773c7a7187b2821340013e07740949240c84..1317f62e0af2ccc0c2f5dcec29cf3fd36ada42f7 100644 (file)
@@ -10,6 +10,7 @@
 #
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  8.  Client/Server Message Formats
@@ -1014,4 +1015,4 @@ decode-pair -
 match INF-Max-RT = 86400
 
 count
-match 90
+match 91
index fe8b778c493f9adb41263980c689a84f537e3786..adbe62cf3f70bb2ede6db00664ae0214cac089c5 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Sub-structures are children of the "key" field.  Sorry.  :(
@@ -48,4 +49,4 @@ decode-pair -
 match Client-ID.DUID = LL, Client-ID.DUID.LL.Hardware-Type = Ethernet, Client-ID.DUID.LL.Hardware-Type.Ethernet.Address = 00:01:02:03:04:05
 
 count
-match 20
+match 21
index 1dfea35915481639dc713fedab17b3ba734aec89..75b430a69bc8e54d1b688cc58d6aa2c3f4fcb2c5 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Simple string type
@@ -31,4 +32,4 @@ decode-pair -
 match Subscriber-ID = ""
 
 count
-match 14
+match 15
index 644bca329a6380d148039cc0d5c626a4171d8982..0a079ddd95293b63667c1f9a9d67c8e72242d902 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  TLV with array type values
@@ -39,4 +40,4 @@ decode-pair -
 match NTP-Server.Address = 2001:db8:85a3::8a2e:370:7334
 
 count
-match 18
+match 19
index cb2971bf25d384d03dd183434bd0f9c3f117fabd..93a07005ed447f010080495aaad31dd37c21a5a0 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Simple data types
@@ -36,4 +37,4 @@ decode-pair -
 match MIP6-Home-Net-Prefix = 2a00:1:1::/55
 
 count
-match 14
+match 15
index 6015c7c0e5869ee9a83e18a0217931cb61fdae30..acc169986f4618bd888df8dd105ecb78e2efb45c 100644 (file)
@@ -7,6 +7,7 @@
 
 proto dhcpv6
 proto-dictionary dhcpv6
+fuzzer-out dhcpv6
 
 #
 #  Array of strings, each substring should have a 16bit length field containing its length
@@ -58,4 +59,4 @@ decode-pair -
 match User-Class = 0x, User-Class = 0x
 
 count
-match 30
+match 31
index 20a057492538a139b9b85d2387617eb70bccf617..3959b5998c5cebb8b74d41df2535d9aa145b5730 100644 (file)
@@ -6,6 +6,7 @@
 
 proto dns
 proto-dictionary dns
+fuzzer-out dns
 
 #
 #  1.
@@ -210,4 +211,4 @@ encode-proto -
 match b4 33 81 a0 00 01 00 01 00 00 00 01 00 00 06 00 01 00 00 06 00 01 00 01 4e fe 00 40 01 61 0c 72 6f 6f 74 2d 73 65 72 76 65 72 73 03 6e 65 74 00 05 6e 73 74 6c 64 0c 76 65 72 69 73 69 67 6e 2d 67 72 73 03 63 6f 6d 00 78 57 d1 92 00 00 07 08 00 00 03 84 00 09 3a 80 00 01 51 80 00 00 29 10 00 00 00 00 00 00 1c 00 0a 00 18 36 bf 11 1f ef 2e 01 09 0a 2f 9d a2 5c 63 6f fb 49 c3 5b b1 4f a4 28 b4
 
 count
-match 18
+match 19
index a91f7ce41c94071926bffb722e8a3a1e48fe4c40..53df254c85ebcbdea845818c3b408fcfeab0d033 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto dns
 proto-dictionary dns
+fuzzer-out dns
 
 #  16 bits of ID 0
 #  Query, all other bits are clear
@@ -10,7 +11,7 @@ proto-dictionary dns
 #  1 answer
 #  0 nscount
 #  0 arcount
-# 
+#
 #  A record of '.', class Internet, TTL 16
 #  length 4, with 127.0.0.1 as the IP address
 
@@ -71,4 +72,4 @@ decode-proto -
 match packet = { id = 0, query = response, opcode = query, authoritative = no, truncated-response = no, recursion-desired = no, recursion-available = no, reserved = no, authentic-data = no, checking-disabled = no, rcode = no-error, qdcount = 0, ancount = 3, nscount = 0, arcount = 0 }, rr = { name = "www.example.com", type = a, class = 1, ttl = 16, type.a = { ip-address = 127.0.0.1 } }, rr = { name = "ftp.example.com", type = a, class = 1, ttl = 16, type.a = { ip-address = 127.0.0.1 } }, rr = { name = "ns.example.com", type = a, class = 1, ttl = 16, type.a = { ip-address = 127.0.0.1 } }
 
 count
-match 22
+match 23
index 0253e9502dae618bfbffc929c1def2c336ca3de8..7d7f0034c4a8179bcc03db65dcf532658fd79d8d 100644 (file)
@@ -3,12 +3,13 @@
 #
 proto dns
 proto-dictionary dns
+fuzzer-out dns
 
 # 0x6000 questions
 decode-proto 44 81 9a 97 00 00 00 00 60 00 00 00  00 00 01 00 2d 00 00 dc dc 23
 match DNS packet malformed - more resource records than indicated in header
 
-# 
+#
 decode-proto 44 81 9a 97 00 00 00 00 00 01 00 00  01 00 00 00 2d 00 00 dc dc 23
 match DNS packet malformed - more resource records than indicated in header
 
@@ -22,4 +23,4 @@ decode-proto 2020 A020 0000 2020 2020 2020 012d 0000 0c20 2020 2020 2000 2520 20
 match DNS packet malformed - more resource records than indicated in header
 
 count
-match 12
+match 13
index 9967b3c82c0014c5c8776ec25ad84448d979b26b..69d51dd9e4d0f11b878fbc5ec90d9de871a418ce 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto dns
 proto-dictionary dns
+fuzzer-out dns
 
 decode-proto f6 ab 01 20 00 01 00 00 00 00 00 01 00 00 06 00 01 00 00 29 10 00 00 00 00 00 00 0c 00 0a 00 08 36 bf 11 1f ef 2e 01 09
 match packet = { id = 63147, query = query, opcode = query, authoritative = no, truncated-response = no, recursion-desired = yes, recursion-available = no, reserved = no, authentic-data = yes, checking-disabled = no, rcode = no-error, qdcount = 1, ancount = 0, nscount = 0, arcount = 1 }, question = { qname = ".", qtype = 6, qclass = internet }, ar = { name = ".", type = opt, class = 4096, ttl = 0, type.opt = { options = { cookie = { client = 0x36bf111fef2e0109 } } } }
@@ -11,4 +12,4 @@ encode-proto -
 match f6 ab 01 20 00 01 00 00 00 00 00 01 00 00 06 00 01 00 00 29 10 00 00 00 00 00 00 0c 00 0a 00 08 36 bf 11 1f ef 2e 01 09
 
 count
-match 6
+match 7
index 97617f795a5e54d8fe851b4d1def5d22abf6d990..b53e730fd178b7752cdf58409073fb16d73bb57f 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 encode-pair Vendor-Specific.Ascend.Data-Filter = "ip in drop tcp dstport > 1023"
 match 1a 28 00 00 02 11 f2 22 01 00 01 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 03 ff 00 03 00 00 00 00 00 00 00 00 00 00
@@ -41,4 +42,4 @@ decode-pair -
 match Vendor-Specific.Ascend.Send-Secret = "foo 56789abcdef0"
 
 count
-match 22
+match 23
index 549c46313934c774a935eab6062d8f4a0714835c..3828823788b8161c8fc8b50c07ec1f9f484a49df 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  See share/dictionary/radius/dictionary.iana for these attributes.
@@ -33,4 +34,4 @@ match cf 13 01 0c 62 69 6c 6f 78 69 2e 63 6f 6d 0a 05 62 6f 62
 
 
 count
-match 14
+match 15
index 4aafb56b67387a37301cb661cb194313d7578fdd..22c6759cf12379519c87ff4a5a52bc0a9d49cc25 100644 (file)
@@ -6,6 +6,7 @@
 #
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 encode-pair Unit-TLV = { Test-Enum-Integer64 = one }
 match fe 0c 0c 0a 00 00 00 00 00 00 00 01
@@ -27,4 +28,4 @@ decode-pair -
 match Unit-TLV = { Test-Enum-Integer32 = one }
 
 count
-match 10
+match 11
index 7c7fd507fde06e383fb7b3975f940e2a35309b7e..1d80f30a29ac937427d1d9494796e9adf6c775f8 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 decode-pair 01 04 00
 match fr_radius_decode_pair: Insufficient data
@@ -11,4 +12,4 @@ decode-pair 01 01 00
 match fr_radius_decode_pair: Insufficient data
 
 count
-match 6
+match 7
index 1b1b1d923cf55a6395998ff6962cb76c035f9e7b..f8c38f1f2a128e6aa6dd0e0981b60700a30b4e63 100644 (file)
@@ -1,6 +1,7 @@
 # Load libfreeradius-radius
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 # Example attributes as used in RFC 6929
 raw 241.1 "bob"
@@ -106,4 +107,4 @@ decode-pair f5 0a 1a 80 00 00 00 01 06 01 f5 05 1a 80 01
 match Extended-Attribute-5.Extended-Vendor-Specific-5.1.6 = 0x0101
 
 count
-match 60
+match 61
index 0d17cfcdae2010547517236ecc563d662c621952..a1395b141ce89cedafafc0d7659db24dea20a8d9 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 encode-pair Vendor-Specific.Lucent.Max-Shared-Users = 1
 match 1a 0d 00 00 12 ee 00 02 07 00 00 00 01
@@ -14,4 +15,4 @@ encode-pair Vendor-Specific.Lucent.65282 = 0x00000001
 match 1a 0d 00 00 12 ee ff 02 07 00 00 00 01
 
 count
-match 10
+match 11
index 672d1d34fe27472649bed8ef3ad2290f08b2942e..58de7f023360cc626bf106ef2ebdb181757bb56f 100644 (file)
@@ -11,6 +11,7 @@
 
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  1.
@@ -22,5 +23,5 @@ decode-proto 2b a6 00 19 7f bf 02 c6 66 2b 59 90 83 8a 5e 6e 33 1b 3f f0 01 05 6
 match Packet-Type = CoA-Request, Packet-Authentication-Vector = 0x7fbf02c6662b5990838a5e6e331b3ff0, User-Name = "bob"
 
 count
-match 4
+match 5
 
index db573e2126684081f2887b703ea6b638f393d638..430bc1fc4bf23983f3b55dbb0fe6ef52c06f36e9 100644 (file)
@@ -11,6 +11,7 @@
 
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  1.
@@ -231,5 +232,5 @@ decode-proto 02 06 00 61 fb ba 6a 78 4c 7d ec b3 14 ca f0 f2 79 44 a3 7b 08 06 f
 match Packet-Type = Access-Accept, Packet-Authentication-Vector = 0xfbba6a784c7decb314caf0f27944a37b, Framed-IP-Address = 255.255.255.254, Framed-MTU = 576, Service-Type = Framed-User, Reply-Message = "Hello, John.McGuirk", EAP-Message = 0x03010004, Message-Authenticator = 0xb9c4ae6213a71d32125ef7ca4e4c6360, User-Name = "John.McGuirk"
 
 count
-match 10
+match 11
 
index a71c451ca0a9ccb92474acbf8ddb5c487b486987..14f58382ab3eea496f1516305e6680439be4d8ef 100644 (file)
@@ -11,6 +11,7 @@
 
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  1.
@@ -67,4 +68,4 @@ decode-proto -
 match Packet-Type = Access-Request, Packet-Authentication-Vector = 0x2afdb090418ac6365298fbbb15e0fd2e, User-Name = "bob", User-Password = "hello", NAS-IPv6-Address = 2001:db8:a0b:12f0::1, Framed-IPv6-Prefix = 2001:db8:a0b:12f0::/64, Framed-IPv6-Prefix = 2001:db8:a0b:12f0::/64, Framed-IPv6-Prefix = ::/0, raw.Framed-IPv6-Prefix = 0x00, raw.Framed-IPv6-Prefix = 0x004020010db80a0b12f0000000000000000000, raw.Framed-IPv6-Prefix = 0x008120010db80a0b12f00000000000000001
 
 count
-match 8
+match 9
index a13178e33b57b15ac2488ac04f590e6b136cad3b..db5dac48c3b8b6ba9f074e99e6b4f76ec51debc3 100644 (file)
@@ -11,6 +11,7 @@
 
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  1.
@@ -191,5 +192,5 @@ decode-proto 02 5a 00 2b fb aa 7d 05 d0 09 95 35 14 d0 06 97 da 4d 1d fc 38 06 3
 match Packet-Type = Access-Accept, Packet-Authentication-Vector = 0xfbaa7d05d009953514d00697da4d1dfc, Egress-VLANID = 855638139, Ingress-Filters = 3, Egress-VLAN-Name = "3vlanname"
 
 count
-match 14
+match 15
 
index 5c036cc05bfd59c02f5bdf679dd81d420eca5e28..2d06f70375fc4b80efcf95f4db878cbba48885be 100644 (file)
@@ -11,6 +11,7 @@
 
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  1.
@@ -42,5 +43,5 @@ decode-proto 01 c8 00 37 bc 6e 70 22 44 5e 35 98 35 69 2c 8c 12 1c 19 85 01 05 6
 match Packet-Type = Access-Request, Packet-Authentication-Vector = 0xbc6e7022445e359835692c8c121c1985, User-Name = "bob", User-Password = "\204\032\0225\365\360\3048\204\356\351\370b\321\377\210", Error-Cause = Residual-Context-Removed, Error-Cause = 209
 
 count
-match 4
+match 5
 
index 77169faec18677a417c1798dd709d413b26cefd1..1def6fd9cedaa56a5fc65fb661e6a38e9b9a55a0 100644 (file)
@@ -11,6 +11,7 @@
 
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  1.
@@ -115,5 +116,5 @@ decode-proto 2d 06 00 26 40 f2 1b de e2 7a 87 a5 d7 57 a3 0b fe d6 2f 28 50 12 8
 match Packet-Type = CoA-NAK, Packet-Authentication-Vector = 0x40f21bdee27a87a5d757a30bfed62f28, Message-Authenticator = 0x852579e8e2e5dcbd781a9007266a06a7
 
 count
-match 14
+match 15
 
index 510984ac4f5369ad4c470af21ffb0d58b4a78800..e7ea9d981019f6687de2a338cc3103f9f3881bdb 100644 (file)
@@ -12,6 +12,7 @@
 #
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  1.
@@ -793,5 +794,5 @@ decode-proto 02 94 00 47 f8 ee 56 2e d9 f5 5c 3a 66 81 98 24 99 07 0d 57 06 06 0
 match Packet-Type = Access-Accept, Packet-Authentication-Vector = 0xf8ee562ed9f55c3a6681982499070d57, Service-Type = Framed-User, Framed-Protocol = PPP, Framed-IP-Address = 172.16.3.33, Framed-IP-Netmask = 255.255.255.0, Framed-Routing = Broadcast-Listen, Filter-Id = "std.ppp", Framed-MTU = 1500, Framed-Compression = Van-Jacobson-TCP-IP
 
 count
-match 40
+match 41
 
index 014421c728f3c6a363aadc63967e2b14bc02d1d0..050bd5457f84ead5001d05e8851ba45eb50452fb 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 decode-pair 05 04 01 02
 match raw.NAS-Port = 0x0102
@@ -17,4 +18,4 @@ encode-pair raw.NAS-Port = 0x0102
 match 05 04 01 02
 
 count
-match 8
+match 9
index ee162ec7b390bc322bef3b996983819c4a3fb0c9..97a22fc3346ac0980149de93a2f7e0233d071774 100644 (file)
@@ -76,6 +76,7 @@
 
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 encode-pair User-Name = "bob"
 match 01 05 62 6f 62
@@ -203,4 +204,4 @@ decode-pair -
 match EAP-Message = 0x78787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787861
 
 count
-match 72
+match 73
index b694ece5f0256dd8b7181b1701ebcdec57288fb4..99c653cf098b8434ba70295d70f5ced430424c9a 100644 (file)
@@ -1,6 +1,7 @@
 # Load libfreeradius-radius
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  The salt is taken from fr_fast_rand(), with a seed set
@@ -108,4 +109,4 @@ decode-pair -
 match Tunnel-Client-Endpoint = "\001\002\003"
 
 count
-match 44
+match 45
index a805fb09b16e8f814991fce30704dc44e3ea51c9..496c11dff9790ad5a688052e1d11304021832ae7 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  RFC 4849 NAS-Filter-Rule
@@ -61,4 +62,4 @@ decode-pair -
 match NAS-Filter-Rule = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
 
 count
-match 30
+match 31
index d9ad7eb47e9b9773ddabf902a31114cf3fc05b85..f1e139847fd32b535458c87e31e63d72206734d5 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  RADIUS does not (yet) support nested TLVs.
@@ -29,4 +30,4 @@ decode-pair -
 match Extended-Attribute-1.IP-Port-Range = { Type = 1, Limit = 2 }
 
 count
-match 14
+match 15
index 28f5086668485f04c93f8cff318fa405bff26122..48e0ad74cf31d1d290115a7189879e071bdd065c 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  Structs in RADIUS
@@ -72,4 +73,4 @@ encode-pair -
 match ff 0d 02 00 00 1a 99 ff fe fd fc fb fa
 
 count
-match 32
+match 33
index 252bf8c32daee39f5468e99e5963b5c48a7da704..d930e6ee042486cecf858288ef2b39bf471f69f8 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  Time delta in milliseconds.
@@ -121,4 +122,4 @@ decode-pair -
 match Unit-TLV = { Delta-MSec-int32 = 2147483647 }
 
 count
-match 64
+match 65
index 234db8f1a0afdac7e389b199d953811124875df8..f2b708cfe883b1eaf528121d9948bc94e4209bab 100644 (file)
@@ -3,6 +3,7 @@
 #
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  Torture tests for various types
@@ -33,4 +34,4 @@ returned
 match -36
 
 count
-match 20
+match 21
index a2d8050b473192ea6a142072b2df365967c2c4a3..feb0ee028ae18f717de2a91a2d218cb2e5a0996d 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  We can't look at the data here, because the encode-paird Tunnel-Password has a 2 byte
@@ -99,4 +100,4 @@ returned
 match -1
 
 count
-match 63
+match 64
index 49faed430091d5ca35de35d8b8731274ab34f935..4fcd095522aecf3b8b9b94867befca192a2ae205 100644 (file)
@@ -1,6 +1,7 @@
 # Load libfreeradius-radius
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  And using the dictionaries
@@ -38,7 +39,7 @@ match Extended-Attribute-2.Extended-Vendor-Specific-2.FreeRADIUS.Unit-EVS-Intege
 #  that format instead of guessing.
 #
 
-encode-pair Extended-Attribute-1.Unit-Ext-241-TLV.Unit-TLV-Integer = 1, Extended-Attribute-1.Unit-Ext-241-TLV.Unit-TLV-Integer = 2 
+encode-pair Extended-Attribute-1.Unit-Ext-241-TLV.Unit-TLV-Integer = 1, Extended-Attribute-1.Unit-Ext-241-TLV.Unit-TLV-Integer = 2
 match f1 0f f3 01 06 00 00 00 01 01 06 00 00 00 02
 
 decode-pair -
@@ -71,4 +72,4 @@ attribute Unit-TLV.Milliseconds = "2019-08-21T07:40:31.123-04:00"
 match Unit-TLV.Milliseconds = "2019-08-21T03:40:31.123Z"
 
 count
-match 32
+match 33
index f5e57c1e6fb6fbeb1297efed642c1fa366414186..71b63588cd0a67be6164c0d6fffc6696d9527d60 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 load-dictionary dictionary
 
@@ -109,4 +110,4 @@ encode-pair Cisco-AVPair = "foo", Cisco-AVPair = "bar"
 match 1a 0b 00 00 00 09 01 05 66 6f 6f 1a 0b 00 00 00 09 01 05 62 61 72
 
 count
-match 51
+match 52
index db65a1dfbd89d906806fb76e12d7d80875adbc6c..135b92c43030dd234461d6b78f60f9849505577d 100644 (file)
@@ -1,5 +1,6 @@
 proto radius
 proto-dictionary radius
+fuzzer-out radius
 
 #
 #  Test vectors for WiMAX attributes.
@@ -54,7 +55,7 @@ match 1a 15 00 00 60 b5 54 0f 00 09 0c 06 0a 08 08 00 01 02 03 04 05
 
 #
 #  We copied enums, too
-# 
+#
 encode-pair Vendor-Specific.WiMAX.Packet-Flow-Descriptor.Classifier.Src-Spec.Assigned = Src-Assigned
 match 1a 10 00 00 60 b5 1c 0a 00 0b 07 05 05 07 03 01
 
@@ -272,4 +273,4 @@ decode-pair -
 match Vendor-Specific.Telrad.TSDF-Table = { TSDF-Parameters = { Reference-QOS-Profile-Name = "garbage" } }
 
 count
-match 126
+match 127
index ff05ebfb3c44e2b7d8fa103c7e1027b432888f98..95f686e9d52c1628384ac38aff5f83b3e5f0e6ff 100644 (file)
@@ -4,6 +4,7 @@
 #
 proto tacacs
 proto-dictionary tacacs
+fuzzer-out tacacs
 
 # ./pam_tacplus/tacc -TRA -u bob -p hello -s 172.17.0.2 -r 1.1.1.1 -k testing123 -S ppp -P ip -L pap
 # N.B. decrypted and unencrypted flag has been set
@@ -69,4 +70,4 @@ decode-proto c002 20ff 2020 2020 0000 0043 2009 0000 0009 000a 2120 2020 2020 20
 match 'Argument-List' argument 3 length 32 overflows the remaining data (0) in the packet
 
 count
-match 28
+match 29
index e36bbf658fa9c1b0e74ae1d37c80d9f031c86ab9..5d572283cdc56e7a4b51a4ec1a6b2e3e791efc10 100644 (file)
@@ -4,6 +4,7 @@
 #
 proto tacacs
 proto-dictionary tacacs
+fuzzer-out tacacs
 
 #
 #  These are the same test packets as for base.txt.  Instead of using the crappy format of
@@ -43,4 +44,4 @@ encode-proto -
 match c0 03 01 00 07 9b 35 d9 00 00 00 5a 7c 8a 99 d6 88 f9 32 3c ed 21 75 25 89 18 7f d0 9f 53 64 c6 9a 0c a7 d8 37 59 ff 5b 8a 0f 08 16 bf 67 9d 02 9e 62 6b 0c e1 9e b4 a3 77 0c 23 c4 d5 5b d0 19 f2 3d 07 57 98 e4 2d f1 4d ef 5e b2 2f 84 d4 9e 5d 8f 13 05 f0 09 6a 44 66 ad 3a fb 59 0c 1d 7a d0 d5 0a 4c 3e 11
 
 count
-match 15
+match 16
index de6f81087102853a48238a0ee9f526e0b1d7fc09..5f1153657d5ffbdca503b4d92efdc02c1a9a2c75 100644 (file)
@@ -4,6 +4,7 @@
 #
 proto tftp
 proto-dictionary tftp
+fuzzer-out tftp
 
 #
 #      Client -> Server (Read-Request) - Without block-size
@@ -60,4 +61,4 @@ encode-proto -
 match 00 05 00 04 4b 61 6c 6f 73 20 46 61 75 6c 74 00
 
 count
-match 26
+match 27
index 383ac884d8ad3cba39e67436bffc91b3df88e884..8aa463e350c30e78c50974e3ffe6d20418df814b 100644 (file)
@@ -4,6 +4,7 @@
 #
 proto tftp
 proto-dictionary tftp
+fuzzer-out tftp
 
 #
 #      Invalid blksize
@@ -48,4 +49,4 @@ decode-proto 00 00 25 88
 match Invalid TFTP opcode 0000
 
 count
-match 18
+match 19
index 66eaf65e33b351992aa95c7c488094cde59d09c4..e5a3b1b75218aef8ff9395598f6b6a82cd3447ed 100644 (file)
@@ -4,6 +4,7 @@
 #
 proto vmps
 proto-dictionary vmps
+fuzzer-out vmps
 
 #
 #      decode Join-Request
@@ -30,4 +31,4 @@ encode-proto -
 match 01 02 00 02 00 00 12 34 00 00 0c 03 00 08 4d 69 72 61 6b 75 6c 6f 00 00 0c 08 00 06 ca fe ca fe ca fe
 
 count
-match 10
+match 11