summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--regress/unittests/test_helper/fuzz.c10
-rw-r--r--regress/unittests/test_helper/test_helper.h10
2 files changed, 18 insertions, 2 deletions
diff --git a/regress/unittests/test_helper/fuzz.c b/regress/unittests/test_helper/fuzz.c
index 93cff6969..06fb247ef 100644
--- a/regress/unittests/test_helper/fuzz.c
+++ b/regress/unittests/test_helper/fuzz.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: fuzz.c,v 1.6 2015/01/18 19:50:55 djm Exp $ */ 1/* $OpenBSD: fuzz.c,v 1.7 2015/01/18 19:52:44 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller <djm@mindrot.org> 3 * Copyright (c) 2011 Damien Miller <djm@mindrot.org>
4 * 4 *
@@ -378,6 +378,14 @@ fuzz_next(struct fuzz *fuzz)
378} 378}
379 379
380int 380int
381fuzz_matches_original(struct fuzz *fuzz)
382{
383 if (fuzz_len(fuzz) != fuzz->slen)
384 return 0;
385 return memcmp(fuzz_ptr(fuzz), fuzz->seed, fuzz->slen) == 0;
386}
387
388int
381fuzz_done(struct fuzz *fuzz) 389fuzz_done(struct fuzz *fuzz)
382{ 390{
383 FUZZ_DBG(("fuzz = %p, strategies = 0x%lx", fuzz, 391 FUZZ_DBG(("fuzz = %p, strategies = 0x%lx", fuzz,
diff --git a/regress/unittests/test_helper/test_helper.h b/regress/unittests/test_helper/test_helper.h
index 48c888ac3..1d9c66986 100644
--- a/regress/unittests/test_helper/test_helper.h
+++ b/regress/unittests/test_helper/test_helper.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_helper.h,v 1.5 2015/01/15 07:36:28 djm Exp $ */ 1/* $OpenBSD: test_helper.h,v 1.6 2015/01/18 19:52:44 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller <djm@mindrot.org> 3 * Copyright (c) 2011 Damien Miller <djm@mindrot.org>
4 * 4 *
@@ -283,6 +283,13 @@ void fuzz_cleanup(struct fuzz *fuzz);
283/* Prepare the next fuzz case in the series */ 283/* Prepare the next fuzz case in the series */
284void fuzz_next(struct fuzz *fuzz); 284void fuzz_next(struct fuzz *fuzz);
285 285
286/*
287 * Check whether this fuzz case is identical to the original
288 * This is slow, but useful if the caller needs to ensure that all tests
289 * generated change the input (e.g. when fuzzing signatures).
290 */
291int fuzz_matches_original(struct fuzz *fuzz);
292
286/* Determine whether the current fuzz sequence is exhausted (nonzero = yes) */ 293/* Determine whether the current fuzz sequence is exhausted (nonzero = yes) */
287int fuzz_done(struct fuzz *fuzz); 294int fuzz_done(struct fuzz *fuzz);
288 295
@@ -292,4 +299,5 @@ u_char *fuzz_ptr(struct fuzz *fuzz);
292 299
293/* Dump the current fuzz case to stderr */ 300/* Dump the current fuzz case to stderr */
294void fuzz_dump(struct fuzz *fuzz); 301void fuzz_dump(struct fuzz *fuzz);
302
295#endif /* _TEST_HELPER_H */ 303#endif /* _TEST_HELPER_H */