public inbox for mauve-patches@sourceware.org
 help / color / mirror / Atom feed
* FYI: SocketPermission ports tests
@ 2006-01-19 14:04 Gary Benson
  0 siblings, 0 replies; only message in thread
From: Gary Benson @ 2006-01-19 14:04 UTC (permalink / raw)
  To: mauve-patches

[-- Attachment #1: Type: text/plain, Size: 245 bytes --]

Hi all,

This commit adds checks that ports and port ranges are handled
correctly by java.net.SocketPermission's implies method.  The
structure for testing hosts was also added, but there are no
strenuous host checks in place yet.

Cheers,
Gary

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 5233 bytes --]

Index: ChangeLog
===================================================================
RCS file: /cvs/mauve/mauve/ChangeLog,v
retrieving revision 1.1359
diff -u -r1.1359 ChangeLog
--- ChangeLog	18 Jan 2006 20:31:58 -0000	1.1359
+++ ChangeLog	19 Jan 2006 13:58:38 -0000
@@ -1,3 +1,8 @@
+2006-01-19  Gary Benson <gbenson@redhat.com>
+
+	* gnu/testlet/java/net/SocketPermission/implies.java: Add checks
+	for ports and (minimally) for hosts.
+
 2006-01-16  Lillian Angel  <langel@redhat.com>
 
 	* gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java:
Index: gnu/testlet/java/net/SocketPermission/implies.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/net/SocketPermission/implies.java,v
retrieving revision 1.2
diff -u -r1.2 implies.java
--- gnu/testlet/java/net/SocketPermission/implies.java	17 Jan 2006 15:10:53 -0000	1.2
+++ gnu/testlet/java/net/SocketPermission/implies.java	19 Jan 2006 13:58:38 -0000
@@ -27,9 +27,101 @@
 
 public class implies implements Testlet
 {
+  private Test[] hosts = new Test[] {
+    new Test("", "", true),
+    new Test("localhost", "localhost", true), // XXX need more!
+  };
+
+  private Test[] ports = new Test[] {
+    // no restriction
+    new Test("", "", true),
+    new Test("", ":80", true),
+    new Test("", ":-80", true),
+    new Test("", ":80-", true),
+    new Test("", ":70-90", true),
+    // one port
+    new Test(":80", "", false),
+    new Test(":80", ":70", false),
+    new Test(":80", ":80", true),
+    new Test(":80", ":-80", false),
+    new Test(":80", ":80-", false),
+    new Test(":80", ":70-90", false),
+    new Test(":80", ":80-80", true),
+    new Test(":80", ":90-90", false),
+    // up to and including x
+    new Test(":-80", "", false),
+    new Test(":-80", ":70", true),
+    new Test(":-80", ":80", true),
+    new Test(":-80", ":90", false),
+    new Test(":-80", ":-70", true),
+    new Test(":-80", ":-80", true),
+    new Test(":-80", ":-90", false),
+    new Test(":-80", ":70-", false),
+    new Test(":-80", ":80-", false),
+    new Test(":-80", ":90-", false),
+    new Test(":-80", ":60-70", true),
+    new Test(":-80", ":70-90", false),
+    new Test(":-80", ":90-100", false),
+    new Test(":-80", ":70-70", true),
+    new Test(":-80", ":80-80", true),
+    new Test(":-80", ":90-90", false),
+    // x and above
+    new Test(":80-", "", false),
+    new Test(":80-", ":70", false),
+    new Test(":80-", ":80", true),
+    new Test(":80-", ":90", true),
+    new Test(":80-", ":-70", false),
+    new Test(":80-", ":-80", false),
+    new Test(":80-", ":-90", false),
+    new Test(":80-", ":70-", false),
+    new Test(":80-", ":80-", true),
+    new Test(":80-", ":90-", true),
+    new Test(":80-", ":60-70", false),
+    new Test(":80-", ":70-90", false),
+    new Test(":80-", ":90-100", true),
+    new Test(":80-", ":70-70", false),
+    new Test(":80-", ":80-80", true),
+    new Test(":80-", ":90-90", true),
+    // double-ended range
+    new Test(":75-85", "", false),
+    new Test(":75-85", ":70", false),
+    new Test(":75-85", ":80", true),
+    new Test(":75-85", ":90", false),
+    new Test(":75-85", ":-70", false),
+    new Test(":75-85", ":-80", false),
+    new Test(":75-85", ":-90", false),
+    new Test(":75-85", ":70-", false),
+    new Test(":75-85", ":80-", false),
+    new Test(":75-85", ":90-", false),
+    new Test(":75-85", ":70-80", false),
+    new Test(":75-85", ":75-85", true),
+    new Test(":75-85", ":80-90", false),
+    new Test(":75-85", ":70-90", false),
+    new Test(":75-85", ":70-70", false),
+    new Test(":75-85", ":80-80", true),
+    new Test(":75-85", ":90-90", false),
+    // bit loss
+    new Test(":80", ":65616", false), // 65616 & 0xFFFF = 80
+    new Test(":80", ":-65456", false), // -65456 & 0xFFFF = 80
+    // also 4294967376?
+  };
+  
   public void test(TestHarness harness)
   {
-    harness.checkPoint("action checking");
+    harness.checkPoint("hostport checking");
+    
+    for (int i = 0; i < hosts.length; i++) {
+      for (int j = 0; j < ports.length; j++) {
+	Test test = new Test(hosts[i], ports[j]);
+	
+	SocketPermission px = new SocketPermission(test.x, "connect");
+	SocketPermission py = new SocketPermission(test.y, "connect");
+
+	harness.check(px.implies(py) == test.expect);
+      }
+    }
+
+    harness.checkPoint("actions checking");
     for (int i = 1; i < 1 << actions.length; i++) {
       for (int j = 1; j < 1 << actions.length; j++) {
 	SocketPermission pi = new SocketPermission("localhost", makeAction(i));
@@ -40,7 +132,28 @@
     }
   }
 
-  // stuff for action checking
+  // stuff for hosts checking
+  private static class Test
+  {
+    String x, y;
+    boolean expect;
+
+    Test(String x, String y, boolean expect)
+    {
+      this.x = x;
+      this.y = y;
+      this.expect = expect;
+    }
+    
+    Test(Test host, Test port)
+    {
+      x = host.x + port.x;
+      y = host.y + port.y;
+      expect = host.expect && port.expect;
+    }
+  }
+
+  // stuff for actions checking
   private static String[] actions = {"accept", "connect", "listen", "resolve"};
   private static String makeAction(int mask)
   {

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-01-19 14:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-19 14:04 FYI: SocketPermission ports tests Gary Benson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).