You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As described in this comment, SpotBugs found some additional bugs in the code.
In this PR I fix part of the found problems.
ChromiumDriver
SpotBugs error:
H C RV: Bad attempt to compute absolute value of signed 32-bit hashcode in org.openqa.selenium.chromium.ChromiumDriver.pin(String) At ChromiumDriver.java:[line 215]
Yes there is an actual bug here.
When script.hashCode() == Integer.MIN_VALUE then the generated code is not valid JavaScript code, and will cause the script to crash.
Here are some key observations to aid the review process:
⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ Recommended focus areas for review
Potential Overflow The fix for the hashCode issue is correct, but it's worth considering if there are any other places in the code where similar issues might occur. A thorough review of hashCode usage throughout the codebase could be beneficial.
Exception Handling The change from catching Exception to IOException | RuntimeException is more specific, which is good. However, it's worth considering if there are any specific exceptions that should be handled differently or logged for debugging purposes.
} catch (IOException | RuntimeException e) {
+ logger.debug("Port {} is not free: {}", port, e.getMessage());
return false;
}
Apply this suggestion
Suggestion importance[1-10]: 7
Why: Adding logging for caught exceptions can significantly aid in debugging and tracking issues, making the code more maintainable. This enhancement is practical and improves the code's robustness by providing more visibility into potential problems.
7
Best practice
Use a more consistent method for converting int to long in hash code calculation
Consider using Long.hashCode(script.hashCode()) instead of casting to long to ensure consistent behavior across different JVM implementations.
Why: The suggestion to use Long.hashCode(script.hashCode()) instead of casting to long is a valid approach to ensure consistent behavior across JVM implementations. However, the impact of this change is moderate as the current casting method is not necessarily problematic.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
User description
Description
As described in this comment, SpotBugs found some additional bugs in the code.
In this PR I fix part of the found problems.
ChromiumDriverSpotBugs error:
documentation
Yes there is an actual bug here.
When
script.hashCode() == Integer.MIN_VALUEthen the generated code is not valid JavaScript code, and will cause the script to crash.Solution: cast hashCode to
longPortProberSpotBugs error:
documentation
Actually the code in the try block declares that it can throw exceptions of types:
IOExceptionSocketExceptionSecurityExceptionIllegalArgumentExceptionThis can be shortened to
IOException | RuntimeExceptionunion.Motivation and Context
Fixing the actual problems is necessary before enabling full SpotBugs analysis, in order to not break the build.
Types of changes
Checklist
PR Type
Bug fix
Description
ChromiumDriverby casting the hash code tolongto prevent invalid JavaScript code when the hash code equalsInteger.MIN_VALUE.PortProberby catching specific exceptions (IOExceptionandRuntimeException) instead of a genericException.Changes walkthrough 📝
ChromiumDriver.java
Fix hashCode handling in `ChromiumDriver` pin methodjava/src/org/openqa/selenium/chromium/ChromiumDriver.java
longto avoid invalidJavaScript code.
Integer.MIN_VALUE.PortProber.java
Simplify exception handling in `PortProber` isFree methodjava/src/org/openqa/selenium/net/PortProber.java
IOExceptionandRuntimeException.handling.