LCOV - code coverage report
Current view: top level - test/fuzz - fuzz_diff_apply.c (source / functions) Hit Total Coverage
Test: lcov.info Lines: 27 27 100.0 %
Date: 2021-11-24 03:28:48 Functions: 5 5 100.0 %

          Line data    Source code
       1             : /* Copyright (c) 2016-2021, The Tor Project, Inc. */
       2             : /* See LICENSE for licensing information */
       3             : 
       4             : #define CONSDIFF_PRIVATE
       5             : 
       6             : #include "orconfig.h"
       7             : #include "core/or/or.h"
       8             : #include "feature/dircommon/consdiff.h"
       9             : 
      10             : #include "test/fuzz/fuzzing.h"
      11             : 
      12             : static int
      13           5 : mock_consensus_compute_digest_(const char *c, size_t len,
      14             :                                consensus_digest_t *d)
      15             : {
      16           5 :   (void)c;
      17           5 :   (void)len;
      18           5 :   memset(d->sha3_256, 3, sizeof(d->sha3_256));
      19           5 :   return 0;
      20             : }
      21             : 
      22             : static int
      23          38 : mock_consensus_digest_eq_(const uint8_t *a, const uint8_t *b)
      24             : {
      25          38 :   (void)a;
      26          38 :   (void)b;
      27          38 :   return 1;
      28             : }
      29             : 
      30             : int
      31         325 : fuzz_init(void)
      32             : {
      33         325 :   MOCK(consensus_compute_digest, mock_consensus_compute_digest_);
      34         325 :   MOCK(consensus_digest_eq, mock_consensus_digest_eq_);
      35         325 :   return 0;
      36             : }
      37             : 
      38             : int
      39         325 : fuzz_cleanup(void)
      40             : {
      41         325 :   UNMOCK(consensus_compute_digest);
      42         325 :   UNMOCK(consensus_digest_eq);
      43         325 :   return 0;
      44             : }
      45             : 
      46             : int
      47         325 : fuzz_main(const uint8_t *stdin_buf, size_t data_size)
      48             : {
      49             : #define SEP "=====\n"
      50             : #define SEPLEN strlen(SEP)
      51         325 :   const uint8_t *separator = tor_memmem(stdin_buf, data_size, SEP, SEPLEN);
      52         325 :   if (! separator)
      53             :     return 0;
      54         323 :   size_t c1_len = separator - stdin_buf;
      55         323 :   const char *c1 = (const char *)stdin_buf;
      56         323 :   size_t c2_len = data_size - c1_len - SEPLEN;
      57         323 :   const char *c2 = (const char *)separator + SEPLEN;
      58             : 
      59         323 :   char *c3 = consensus_diff_apply(c1, c1_len, c2, c2_len);
      60             : 
      61         323 :   tor_free(c3);
      62             : 
      63         323 :   return 0;
      64             : }

Generated by: LCOV version 1.14