Author: nextgens
Date: 2008-04-14 04:18:17 +0000 (Mon, 14 Apr 2008)
New Revision: 19299

Modified:
   trunk/freenet/src/freenet/node/FailureTable.java
Log:
prevent a potential array out of bounds

Modified: trunk/freenet/src/freenet/node/FailureTable.java
===================================================================
--- trunk/freenet/src/freenet/node/FailureTable.java    2008-04-14 04:09:28 UTC 
(rev 19298)
+++ trunk/freenet/src/freenet/node/FailureTable.java    2008-04-14 04:18:17 UTC 
(rev 19299)
@@ -158,14 +158,16 @@
                                        if(offers[i] == offer) idx = i;
                                }
                                if(idx == -1) return;
-                               BlockOffer[] newOffers = new 
BlockOffer[offers.length-1];
-                               if(idx > 0)
-                                       System.arraycopy(offers, 0, newOffers, 
0, idx);
-                               if(idx < newOffers.length)
-                                       System.arraycopy(offers, idx+1, 
newOffers, idx, offers.length-idx-1);
-                               offers = newOffers;
+                               if(offers.length > 1) {
+                                       BlockOffer[] newOffers = new 
BlockOffer[offers.length-1];
+                                       if(idx > 0)
+                                               System.arraycopy(offers, 0, 
newOffers, 0, idx);
+                                       if(idx < newOffers.length)
+                                               System.arraycopy(offers, idx+1, 
newOffers, idx, offers.length-idx-1);
+                                       offers = newOffers;
+                               }
                        }
-                       if(offers.length == 0) {
+                       if(offers.length < 1) {
                                synchronized(FailureTable.this) {
                                        
blockOfferListByKey.removeKey(entry.key);
                                }


Reply via email to