0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-03-05 14:06:27 -05:00

Merge bitcoin/bitcoin#27477: test: add regression tests for #27468 (invalid URI segfaults)

6a77d290da test: add regression tests for #27468 (invalid URI segfaults) (Sebastian Falbesoner)

Pull request description:

  Prior to PR #27468 (commit 11422cc572) 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).

ACKs for top commit:
  stickies-v:
    ACK 6a77d290da
  vasild:
    ACK 6a77d290da

Tree-SHA512: b5dd22d7d448f92236575ea950287259795a957a3f8e364682510c7c1ede5f9d67e7daccc5146c8d0817bcb71742d49273801574bd2bb96e44a9ae5a006ac2a7
This commit is contained in:
fanquake 2023-04-18 09:07:33 +01:00
commit 467fa89438
No known key found for this signature in database
GPG key ID: 2EEB9F5CC09526C1

View file

@ -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)