fabed982ad9143cddaca8346f6b4c243dd84e0c4 re-enabled the assert `assert(banmap == banmap_read)` in `banman`:
```cpp
ban_man.DumpBanlist();
SetMockTime(ConsumeTime(fuzzed_data_provider));
banmap_t banmap;
ban_man.GetBanned(banmap);
BanMan ban_man_read{banlist_file, /* client_interface */ nullptr, /* default_ban_time */ 0};
banmap_t banmap_read;
ban_man_read.GetBanned(banmap_read);
assert(banmap == banmap_read);
```

However, my server crashed because of it. Debugging it I could realize the problem is the function `LookupSubnet`. 

During the execution that caused the crash, the banman has been filled with the following subnets:
```sh
2e:6f6e:696f:6ef3:a080:b18d:5d5d:5d00%2038004089/121
191:b491:7979:7979:7979:7979:79ff:ff80%2037980897/121
207:fc26:b9ce:7aae:798b:5f2d:1d39:4380%2038004089/121
676:c962:7962:b787:b392:fed8:7058:c500%2038004089/121
...
```

After dumping it (`DumpBanlist`), we initialize a `BanMan` reading same file:
```cpp
BanMan ban_man_read{banlist_file, /* client_interface */ nullptr, /* default_ban_time */ 0};
banmap_t banmap_read;
ban_man_read.GetBanned(banmap_read);
```
However, when we initialize a `BanMan` it will - at some point - call `BanMapFromJson`.

Taking a look at `BanMapFromJson`, I noticed we have:
```cpp
if (!LookupSubNet(subnet_str, subnet)) {
    LogPrintf("Dropping entry with unparseable address or subnet (%s) from ban list\n", subnet_str);
    continue;
}
```
Calling `LookupSubNet`, for example, with `2e:6f6e:696f:6ef3:a080:b18d:5d5d:5d00%2038004089/121`, will return true, but the subnet will be `2e:6f6e:696f:6ef3:a080:b18d:5d5d:5d00%31097` making the assertion `assert(banmap == banmap_read)` to fail.

-----------

Got this with macOS Ventura 13.0.
```sh
./configure --enable-fuzz --with-sanitizers=fuzzer,address,undefined --disable-asm CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++
```

Crash:
```sh
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 3851287319
INFO: Loaded 1 modules   (1130675 inline 8-bit counters): 1130675 [0x107b6cd60, 0x107c80e13), 
INFO: Loaded 1 PC tables (1130675 PCs): 1130675 [0x107c80e18,0x108dc1948), 
src/test/fuzz/fuzz: Running 1 inputs 1 time(s) each.
Running: crash-cc17009262908f232f471481d1ad808e2bf6dc14
Assertion failed: (banmap == banmap_read), function banman_fuzz_target, file banman.cpp, line 112.
==79739== ERROR: libFuzzer: deadly signal
    #0 0x10a453ea4 in __sanitizer_print_stack_trace+0x28 (libclang_rt.asan_osx_dynamic.dylib:arm64+0x5bea4) (BuildId: 5c04277be4ee3a049b85963fe58ab4e132000000200000000100000000000b00)
    #1 0x1070bf970 in fuzzer::PrintStackTrace() FuzzerUtil.cpp:210
    #2 0x1070a3d8c in fuzzer::Fuzzer::CrashCallback() FuzzerLoop.cpp:233
    #3 0x18065c2a0 in _sigtramp+0x34 (libsystem_platform.dylib:arm64+0x42a0) (BuildId: 781896702f47332c9a59a210157aa97b32000000200000000100000000000d00)
    #4 0xfa7f80018062dce8  (<unknown module>)
    #5 0x51270001805672c4  (<unknown module>)
    #6 0x614a00018056661c  (<unknown module>)
    #7 0x382f000104c37c88  (<unknown module>)
    #8 0x1052468f8 in LLVMFuzzerTestOneInput fuzz.cpp:169
    #9 0x1070a51c8 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) FuzzerLoop.cpp:617
    #10 0x107091590 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) FuzzerDriver.cpp:324
    #11 0x1070967c4 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) FuzzerDriver.cpp:860
    #12 0x1070c0bc0 in main FuzzerMain.cpp:20
    #13 0x180303e4c  (<unknown module>)
    #14 0x7d03fffffffffffc  (<unknown module>)

NOTE: libFuzzer has rudimentary signal handlers.
      Combine libFuzzer with AddressSanitizer or similar for better crash reports.
SUMMARY: libFuzzer: deadly signal
```

Seed:
```sh
X3J1bmViYX39GgAAAAAAAAD///8AACsAXAAAAFx00UUXXXQBFRUVFRUVFRUVFRVvLwB/AAAAgAABAAABAQcAAACRtJGdEZGRQAAAAMQgf38AQAqRkf/w/6cCAZG0kXl5eXl5eXl5ef//////////eXl5eXl5eXl5eXl5eXl5jMCDHsFtvdtVxH7U1agiqUM6FTiq9Tg1OfCMddTHrRhzOQ0wCFHRVS3D7kqAmf4ii4FzNYkn9XcN8ubYNitv6cgN9E1kKPbQJOCC2dYrPDwDDQHZQeqOD7K+uD8GdslieWK3h7OS/thwWMUdw+KmgryaSZvunotnNKkz/uq98HjtQrUH/LUmUeb7pTZHqTApZ3jXVmGS2Muo96HLI9g3d0EG5LHce+mRSy2jB6TFuBRAQpwjghLRiU+S75ltwhrmRUXBfa4kpmjq2FrBYiVbbTYisifxMsnvPS7ix+IwpTats2ewEGQITg/MeZbhvKcZxxczHeb6ht1PrRV4/o/msCwN2d8RVC0DYh2gqj1aC06cGMXgoZw+T3ll5CH8dghESnW98W3i283GUy/3tSwPV8GLot5X/DupHLge/RQxtmgnIJhXgq/UMzTL7XK9y1oMooLSPiDhJiVmrKE95f549o1H9UZXSx1mwGCqap51HHrCSsnjiP13Wn1+WtyEUUAObNBDhcSjuHMMWY95B938zoOKTbFpyY3gzAi5Z8ujR2KmnEaKT4MKAVGQAAAAAAAAAAAAAAAAAAAAAP5W0ABJaWjFneFMmuY9koAoGVtScppmwwOw9++Ufx0dTyvFjZHkROJ6mlu0UKCvY6sTccKSugFu0/QncpR5/DBzYqTSe0OKQSMhzIN2HQEAo05OWxU9XQsTKRfg/bSB1//EXudt4jZEIyns29ZRAAAAAAAAAAB5cXFxcXFxcXFxcXFxcXFxcXl5PgAAAAAAAABwkZiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmEAAAC5vbmlvbvOggLGNXV1dDV0NAABVlEQAXRAAP11d+gj/f7+12l1VlABdEF0AROA9//////8I/38I/yZ/CP9/CP9/CP9/CP9/B/9/CHl5eXn/////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeXl5eQB5ecJ5eQF0eXl5eXl5eXl5eXkAgDsAAACAeXkmeXmwV3P1HqaLvq9HJCO3LQzu6Khz1/N6ndp/+0uXhvDVw6ekexeobSVOnFS7455nfwXAfGVyqxh8mvHWMdOKECKCa6HLBzj/rHbPG+HNtG/wvAIH/Ca5znqueYtfLR05Q66eoEheVZbgZSZn9xtbTUOMCPf+fwZ/3/wCs5ve9RqjRhRopnTXzm6R53SyY8OhPkjZfmHekZiP4qpCUN0rFIU8cZojTVAUZWJjT7OKXmAgZ5GWTGuyos8GKQMfmo4KCFuwt0/0+x9aKSC2z5JDTqebow5cVrdEjrozEjNXNL36tvOaLdGvcMfJ8xlUmOjI6DU+pmEn4ZUXUxUu9CnwZ8ZsjJcs0bOiVJd5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eYeHeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5/YfYfutDeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXkAeXl5eeEeeXl5eXl6eYATE3l5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl9eXl5eQCAOwAAAIB5eXl5eQ==
```



-----------

The following diff reproduces the behavior:

```diff
diff --git a/src/test/banman_tests.cpp b/src/test/banman_tests.cpp
index cebe3629d..d24f55979 100644
--- a/src/test/banman_tests.cpp
+++ b/src/test/banman_tests.cpp
@@ -20,11 +20,12 @@ BOOST_AUTO_TEST_CASE(file)
     SetMockTime(777s);
     const fs::path banlist_path{m_args.GetDataDirBase() / "banlist_test"};
     {
+        const std::string suspect_subnet{"2e:6f6e:696f:6ef3:a080:b18d:5d5d:5d00%2038004089/121"};
         const std::string entries_write{
             "{ \"banned_nets\": ["
             "  { \"version\": 1, \"ban_created\": 0, \"banned_until\": 778, \"address\": \"aaaaaaaaa\" },"
             "  { \"version\": 2, \"ban_created\": 0, \"banned_until\": 778, \"address\": \"bbbbbbbbb\" },"
-            "  { \"version\": 1, \"ban_created\": 0, \"banned_until\": 778, \"address\": \"1.0.0.0/8\" }"
+            "  { \"version\": 1, \"ban_created\": 0, \"banned_until\": 778, \"address\": \"2e:6f6e:696f:6ef3:a080:b18d:5d5d:5d00%2038004089/121\" }"
             "] }",
         };
         BOOST_REQUIRE(WriteBinaryFile(banlist_path + ".json", entries_write));
@@ -36,6 +37,11 @@ BOOST_AUTO_TEST_CASE(file)
             banmap_t entries_read;
             banman.GetBanned(entries_read);
             BOOST_CHECK_EQUAL(entries_read.size(), 1);
+
+            for (const auto& it : entries_read) {
+                CSubNet sub_net = it.first;
+                BOOST_CHECK_EQUAL(sub_net.ToString(), suspect_subnet);
+            }
         }
     }
 }
```


```diff
diff --git a/test/functional/rpc_setban.py b/test/functional/rpc_setban.py
index b4f3d77e5..93a19920c 100755
--- a/test/functional/rpc_setban.py
+++ b/test/functional/rpc_setban.py
@@ -25,6 +25,10 @@ class SetBanTests(BitcoinTestFramework):
         peerinfo = self.nodes[1].getpeerinfo()[0]
         assert not "noban" in peerinfo["permissions"]
 
+        subnet = "2e:6f6e:696f:6ef3:a080:b18d:5d5d:5d00%2038004089/121"
+        self.nodes[1].setban(subnet, "add")
+        assert self.is_banned(self.nodes[1], subnet)
+
         # Node 0 get banned by Node 1
         self.nodes[1].setban("127.0.0.1", "add")
```
banlist_file = fs::path{"path"} / "to" / "inaccessible" / "fuzzed_banlist";
        }
    }
    {
        BanMan ban_man{banlist_file, nullptr, ConsumeBanTimeOffset(fuzzed_data_provider)};
        
        
        
        LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 300)
        {
            CallOneOf(
                fuzzed_data_provider,
                [&] {
                    ban_man.Ban(ConsumeNetAddr(fuzzed_data_provider),
                                ConsumeBanTimeOffset(fuzzed_data_provider), fuzzed_data_provider.ConsumeBool());
                },
                [&] {
                    ban_man.Ban(ConsumeSubNet(fuzzed_data_provider),
                                ConsumeBanTimeOffset(fuzzed_data_provider), fuzzed_data_provider.ConsumeBool());
                },
                [&] {
                    ban_man.ClearBanned();
                },
                [&] {
                    ban_man.IsBanned(ConsumeNetAddr(fuzzed_data_provider));
                },
                [&] {
                    ban_man.IsBanned(ConsumeSubNet(fuzzed_data_provider));
                },
                [&] {