Skip to content

Commit 855208c

Browse files
committed
[grid] Refectoring rejectEvent and guarding UUID parsing
Fixes SeleniumHQ/docker-selenium#1497
1 parent 1c64af8 commit 855208c

1 file changed

Lines changed: 21 additions & 11 deletions

File tree

java/src/org/openqa/selenium/events/zeromq/UnboundZmqEventBus.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ public void close() {
209209
}
210210

211211
private class PollingRunnable implements Runnable {
212-
private Secret secret;
212+
private final Secret secret;
213213

214214
public PollingRunnable(Secret secret) {
215215
this.secret = secret;
@@ -234,11 +234,25 @@ public void run() {
234234
try {
235235
eventSecret = JSON.toType(receivedEventSecret, Secret.class);
236236
} catch (JsonException e) {
237-
rejectEvent(eventName, receivedEventSecret);
237+
rejectEvent(
238+
eventName,
239+
receivedEventSecret,
240+
"Could not parse event secret, rejecting event. " + e.getMessage());
241+
return;
242+
}
243+
244+
UUID id;
245+
String eventId = new String(socket.recv(), UTF_8);
246+
try {
247+
id = UUID.fromString(eventId);
248+
} catch (IllegalArgumentException e) {
249+
rejectEvent(
250+
eventName,
251+
receivedEventSecret,
252+
"Could not parse event id, rejecting event. " + e.getMessage());
238253
return;
239254
}
240255

241-
UUID id = UUID.fromString(new String(socket.recv(), UTF_8));
242256
String data = new String(socket.recv(), UTF_8);
243257

244258
// Don't bother doing more work if we've seen this message.
@@ -252,17 +266,15 @@ public void run() {
252266
recentMessages.add(id);
253267

254268
if (!Secret.matches(secret, eventSecret)) {
255-
rejectEvent(eventName, data);
269+
rejectEvent(eventName, data, "Rejecting message without a valid secret");
256270
return;
257271
}
258272

259273
notifyListeners(eventName, event);
260274
}
261275
}
262276
} catch (Exception e) {
263-
if (e.getCause() instanceof AssertionError) {
264-
// Do nothing.
265-
} else {
277+
if (!(e.getCause() instanceof AssertionError)) {
266278
LOG.log(Level.WARNING, e,
267279
() -> "Caught exception while polling for event bus messages: " +
268280
e.getMessage());
@@ -271,12 +283,10 @@ public void run() {
271283
}
272284
}
273285

274-
private void rejectEvent(EventName eventName, String data) {
286+
private void rejectEvent(EventName eventName, String data, String message) {
275287
Event rejectedEvent = new Event(REJECTED_EVENT,
276288
new ZeroMqEventBus.RejectedEvent(eventName, data));
277-
LOG.log(Level.SEVERE,
278-
"Received message without a valid secret. Rejecting. {0} -> {1}",
279-
new Object[]{rejectedEvent, data}); // String formatting only applied if needed
289+
LOG.log(Level.SEVERE, "{0}. {1}", new Object[]{message, rejectedEvent});
280290

281291
notifyListeners(REJECTED_EVENT, rejectedEvent);
282292
}

0 commit comments

Comments
 (0)