LCOV - code coverage report
Current view: top level - src/test/fuzz - net.cpp (source / functions) Hit Total Coverage
Test: fuzz_coverage.info Lines: 50 50 100.0 %
Date: 2023-10-05 15:40:34 Functions: 14 14 100.0 %
Branches: 35 62 56.5 %

           Branch data     Line data    Source code
       1                 :            : // Copyright (c) 2020-2022 The Bitcoin Core developers
       2                 :            : // Distributed under the MIT software license, see the accompanying
       3                 :            : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       4                 :            : 
       5                 :            : #include <chainparams.h>
       6                 :            : #include <net.h>
       7                 :            : #include <net_permissions.h>
       8                 :            : #include <netaddress.h>
       9                 :            : #include <protocol.h>
      10                 :            : #include <random.h>
      11                 :            : #include <test/fuzz/FuzzedDataProvider.h>
      12                 :            : #include <test/fuzz/fuzz.h>
      13                 :            : #include <test/fuzz/util.h>
      14                 :            : #include <test/fuzz/util/net.h>
      15                 :            : #include <test/util/net.h>
      16                 :            : #include <test/util/setup_common.h>
      17         [ +  - ]:        173 : #include <util/asmap.h>
      18         [ +  - ]:        173 : #include <util/chaintype.h>
      19                 :            : 
      20                 :            : #include <cstdint>
      21                 :            : #include <optional>
      22                 :            : #include <string>
      23                 :            : #include <vector>
      24                 :            : 
      25                 :          1 : void initialize_net()
      26                 :            : {
      27   [ +  -  -  +  :          1 :     static const auto testing_setup = MakeNoLogFileContext<>(ChainType::MAIN);
                   +  - ]
      28                 :          1 : }
      29                 :            : 
      30   [ +  -  -  + ]:        801 : FUZZ_TARGET(net, .init = initialize_net)
      31                 :            : {
      32                 :        455 :     FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
      33                 :        455 :     SetMockTime(ConsumeTime(fuzzed_data_provider));
      34                 :        455 :     CNode node{ConsumeNode(fuzzed_data_provider)};
      35   [ +  -  +  - ]:        455 :     node.SetCommonVersion(fuzzed_data_provider.ConsumeIntegral<int>());
      36   [ +  -  +  +  :     104359 :     LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
                   +  + ]
      37         [ +  - ]:     103904 :         CallOneOf(
      38                 :            :             fuzzed_data_provider,
      39                 :     104024 :             [&] {
      40                 :        120 :                 node.CloseSocketDisconnect();
      41                 :        120 :             },
      42                 :     110962 :             [&] {
      43                 :       7058 :                 CNodeStats stats;
      44         [ +  - ]:       7058 :                 node.CopyStats(stats);
      45                 :       7058 :             },
      46                 :     103959 :             [&] {
      47                 :         55 :                 const CNode* add_ref_node = node.AddRef();
      48         [ +  - ]:         55 :                 assert(add_ref_node == &node);
      49                 :         55 :             },
      50                 :     105219 :             [&] {
      51         [ +  + ]:       1315 :                 if (node.GetRefCount() > 0) {
      52                 :         29 :                     node.Release();
      53                 :         29 :                 }
      54                 :       1315 :             },
      55                 :     103947 :             [&] {
      56                 :         43 :                 const std::optional<CService> service_opt = ConsumeDeserializable<CService>(fuzzed_data_provider, ConsumeDeserializationParams<CNetAddr::SerParams>(fuzzed_data_provider));
      57         [ +  + ]:         43 :                 if (!service_opt) {
      58                 :         37 :                     return;
      59                 :            :                 }
      60   [ +  -  +  - ]:          6 :                 node.SetAddrLocal(*service_opt);
      61         [ -  + ]:         43 :             },
      62                 :     199217 :             [&] {
      63                 :      95313 :                 const std::vector<uint8_t> b = ConsumeRandomLengthByteVector(fuzzed_data_provider);
      64                 :            :                 bool complete;
      65   [ +  -  +  - ]:      95313 :                 node.ReceiveMsgBytes(b, complete);
      66                 :      95313 :             });
      67                 :     103904 :     }
      68                 :            : 
      69         [ +  - ]:        455 :     (void)node.GetAddrLocal();
      70         [ +  - ]:        455 :     (void)node.GetId();
      71         [ +  - ]:        455 :     (void)node.GetLocalNonce();
      72         [ +  - ]:        455 :     const int ref_count = node.GetRefCount();
      73         [ -  + ]:        455 :     assert(ref_count >= 0);
      74         [ +  - ]:        628 :     (void)node.GetCommonVersion();
      75                 :            : 
      76                 :        455 :     const NetPermissionFlags net_permission_flags = ConsumeWeakEnum(fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS);
      77         [ +  - ]:        455 :     (void)node.HasPermission(net_permission_flags);
      78         [ +  - ]:        455 :     (void)node.ConnectedThroughNetwork();
      79                 :        455 : }

Generated by: LCOV version 1.14