Description
This will allocate an arbitrarily large byte buffer (and try to read it!):
public boolean receiveConnection(Socket sock) { Long sid = null; ... sid = din.readLong(); // next comes the #bytes in the remainder of the message int num_remaining_bytes = din.readInt(); byte[] b = new byte[num_remaining_bytes]; // remove the remainder of the message from din int num_read = din.read(b);
This will crash the QuorumCnxManager thread, so the cluster will keep going but future elections might fail to converge (ditto for leaving/joining members).
Patch coming up in a bit.
Attachments
Attachments
Issue Links
- Blocked
-
ZOOKEEPER-3016 Follower QuorumCnxManager$Listener thread died due to incorrect client packet
- Resolved