aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Falbesoner <sebastian.falbesoner@gmail.com>2023-04-17 18:40:58 +0200
committerSebastian Falbesoner <sebastian.falbesoner@gmail.com>2023-04-17 18:40:58 +0200
commit6a77d290da589bd5620585def5bfc019e242e189 (patch)
treeae7b3700a9ba7320b4418fe4fd5efeb7b15918af
parent54e07a05b28d2bca8fc08cca0bf6e7ddf6762488 (diff)
downloadbitcoin-6a77d290da589bd5620585def5bfc019e242e189.tar.xz
test: add regression tests for #27468 (invalid URI segfaults)
Prior to PR #27468 (commit 11422cc5720c8d73a87600de8fe8abb156db80dc) all call-sites of `GetQueryParameter(...)` in the REST module could trigger a crash. Add missing test cases for all possible code-paths as a regression test, as a foundation for possible follow-up fixes (which aim to resolve this issue in a more general and robust way).
-rwxr-xr-xtest/functional/interface_rest.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/test/functional/interface_rest.py b/test/functional/interface_rest.py
index 869bd5c235..5017f77d18 100755
--- a/test/functional/interface_rest.py
+++ b/test/functional/interface_rest.py
@@ -278,8 +278,9 @@ class RESTTest (BitcoinTestFramework):
assert_equal(json_obj[0]['hash'], bb_hash) # request/response hash should be the same
# Check invalid uri (% symbol at the end of the request)
- resp = self.test_rest_request(f"/headers/{bb_hash}%", ret_type=RetType.OBJ, status=400)
- assert_equal(resp.read().decode('utf-8').rstrip(), "URI parsing failed, it likely contained RFC 3986 invalid characters")
+ for invalid_uri in [f"/headers/{bb_hash}%", f"/blockfilterheaders/basic/{bb_hash}%", "/mempool/contents.json?%"]:
+ resp = self.test_rest_request(invalid_uri, ret_type=RetType.OBJ, status=400)
+ assert_equal(resp.read().decode('utf-8').rstrip(), "URI parsing failed, it likely contained RFC 3986 invalid characters")
# Compare with normal RPC block response
rpc_block_json = self.nodes[0].getblock(bb_hash)