On Thursday, Apr 13, 2000, Oskar Sandberg writes:
>
>Yeah, the casting on the port is wrong, somebody is guilty having decided to
>use a signed short for it, when really at least an unsigned short is needed. I
>never got around to fixing it because the short is used in bunch of places.
>Feel free to do so yourself.
>
>AFAIK 77777 is illegal though.
Well, I decided to take a small swing at fixing this; part of the following
patch
removes the cast to short since it seems to be unnecessary. The other part
adds some range checking to tcpAddress.port.
Uh, I guess I should ask what format people want patches in; are context
diffs okay? That's what you're getting this time at least...
--pj
diff -c -r1.5 tcpAddress.java
*** tcpAddress.java 2000/03/29 18:49:13 1.5
--- tcpAddress.java 2000/04/13 19:08:33
***************
*** 30,46 ****
/** The port number that the client is listening to **/
public int port;
! public tcpAddress(InetAddress i, int portnum)
{
host = i;
! port = portnum;
}
public tcpAddress(String ip, int portnum)
! throws UnknownHostException
{
host = InetAddress.getByName(ip);
! port = portnum;
}
/** Creates an address from a string in the format "a.b.c.d:p" **/
--- 30,47 ----
/** The port number that the client is listening to **/
public int port;
! public tcpAddress(InetAddress i, int portnum)
! throws IllegalArgumentException
{
host = i;
! setPort(portnum);
}
public tcpAddress(String ip, int portnum)
! throws IllegalArgumentException, UnknownHostException
{
host = InetAddress.getByName(ip);
! setPort(portnum);
}
/** Creates an address from a string in the format "a.b.c.d:p" **/
***************
*** 50,56 ****
int i=str.indexOf(':');
if(i==-1) throw new IllegalArgumentException();
host=InetAddress.getByName(str.substring(0,i));
! port=new Integer(str.substring(i+1)).intValue();
}
public ProtocolListeningAddress listenPart()
--- 51,57 ----
int i=str.indexOf(':');
if(i==-1) throw new IllegalArgumentException();
host=InetAddress.getByName(str.substring(0,i));
! setPort(new Integer(str.substring(i+1)).intValue());
}
public ProtocolListeningAddress listenPart()
***************
*** 75,78 ****
--- 76,87 ----
return ((o instanceof tcpAddress) &&
((tcpAddress) o).host.equals(host));
}
+
+ public void setPort(int portnum) throws IllegalArgumentException
+ {
+ if ((portnum <0) || (portnum >65535)) {
+ throw new IllegalArgumentException();
+ }
+ port=portnum;
+ }
}
_______________________________________________
Freenet-dev mailing list
Freenet-dev at lists.sourceforge.net
http://lists.sourceforge.net/mailman/listinfo/freenet-dev