RFR: 8027570 NullPointerException in URLPermission.hashCode()

Michael McMahon michael.x.mcmahon at oracle.com
Wed Oct 30 09:51:04 PDT 2013


Interesting little bug this one. The precedence rules
were overlooked and the expected result of an expression evaluation
wasn't what was expected. The webrev is below, but the diff is

diff -r 9a5048dc7c0d src/share/classes/java/net/URLPermission.java
--- a/src/share/classes/java/net/URLPermission.java    Wed Oct 30 
14:41:42 2013 +0000
+++ b/src/share/classes/java/net/URLPermission.java    Wed Oct 30 
16:33:15 2013 +0000
@@ -353,7 +353,7 @@
          return getActions().hashCode()
              + scheme.hashCode()
              + authority.hashCode()
-            + path == null ? 0 : path.hashCode();
+            + (path == null ? 0 : path.hashCode());
      }


Without the parentheses:

      scheme.hashCode() + authority.hashCode() + path

is evaluated as a string concatenation. The result is compared with 
null, which always fails,
meaning that path.hashCode() is always called, even when path is null ....

webrev is at http://cr.openjdk.java.net/~michaelm/8027570/webrev.1/

Thanks
Michael









More information about the net-dev mailing list