mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-07-05 05:02:06 +02:00
p2p, rpc: don't allow past absolute timestamp in setban
This commit is contained in:
@ -741,6 +741,10 @@ static RPCHelpMan setban()
|
|||||||
|
|
||||||
const bool absolute{request.params[3].isNull() ? false : request.params[3].get_bool()};
|
const bool absolute{request.params[3].isNull() ? false : request.params[3].get_bool()};
|
||||||
|
|
||||||
|
if (absolute && banTime < GetTime()) {
|
||||||
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "Error: Absolute timestamp is in the past");
|
||||||
|
}
|
||||||
|
|
||||||
if (isSubnet) {
|
if (isSubnet) {
|
||||||
node.banman->Ban(subNet, banTime, absolute);
|
node.banman->Ban(subNet, banTime, absolute);
|
||||||
if (node.connman) {
|
if (node.connman) {
|
||||||
|
@ -46,6 +46,9 @@ class DisconnectBanTest(BitcoinTestFramework):
|
|||||||
assert_raises_rpc_error(-30, "Error: Invalid IP/Subnet", self.nodes[1].setban, "127.0.0.1/42", "add")
|
assert_raises_rpc_error(-30, "Error: Invalid IP/Subnet", self.nodes[1].setban, "127.0.0.1/42", "add")
|
||||||
assert_equal(len(self.nodes[1].listbanned()), 1) # still only one banned ip because 127.0.0.1 is within the range of 127.0.0.0/24
|
assert_equal(len(self.nodes[1].listbanned()), 1) # still only one banned ip because 127.0.0.1 is within the range of 127.0.0.0/24
|
||||||
|
|
||||||
|
self.log.info("setban: fail to ban with past absolute timestamp")
|
||||||
|
assert_raises_rpc_error(-8, "Error: Absolute timestamp is in the past", self.nodes[1].setban, "127.27.0.1", "add", 123, True)
|
||||||
|
|
||||||
self.log.info("setban remove: fail to unban a non-banned subnet")
|
self.log.info("setban remove: fail to unban a non-banned subnet")
|
||||||
assert_raises_rpc_error(-30, "Error: Unban failed", self.nodes[1].setban, "127.0.0.1", "remove")
|
assert_raises_rpc_error(-30, "Error: Unban failed", self.nodes[1].setban, "127.0.0.1", "remove")
|
||||||
assert_equal(len(self.nodes[1].listbanned()), 1)
|
assert_equal(len(self.nodes[1].listbanned()), 1)
|
||||||
|
Reference in New Issue
Block a user