Author: bayard
Date: Tue Oct 31 13:34:03 2006
New Revision: 469661

URL: http://svn.apache.org/viewvc?view=rev&rev=469661
Log:
Applying unit test and fix for #LANG-292. Also fixes a couple of problems with 
the unescape(Writer..) overload that came up

Modified:
    
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java
    
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/EntitiesTest.java

Modified: 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java?view=diff&rev=469661&r1=469660&r2=469661
==============================================================================
--- 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java
 (original)
+++ 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java
 Tue Oct 31 13:34:03 2006
@@ -847,6 +847,9 @@
                             } else {
                                 entityValue = 
Integer.parseInt(entityName.substring(1));
                             }
+                            if (entityValue > 0xFFFF) {
+                                entityValue = -1;
+                            }
                         } catch (NumberFormatException ex) {
                             entityValue = -1;
                         }
@@ -917,13 +920,17 @@
                                     case 'X' :
                                     case 'x' : {
                                         entityValue = 
Integer.parseInt(entityContent.substring(2), 16);
+                                        break;
                                     }
                                     default : {
                                         entityValue = 
Integer.parseInt(entityContent.substring(1), 10);
                                     }
                                 }
+                                if (entityValue > 0xFFFF) {
+                                    entityValue = -1;
+                                }
                             } catch (NumberFormatException e) {
-                                // ignore the escaped value content
+                                entityValue = -1;
                             }
                         }
                     } else { //escaped value content is an entity name

Modified: 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/EntitiesTest.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/EntitiesTest.java?view=diff&rev=469661&r1=469660&r2=469661
==============================================================================
--- 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/EntitiesTest.java
 (original)
+++ 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/EntitiesTest.java
 Tue Oct 31 13:34:03 2006
@@ -197,5 +197,13 @@
         assertEquals(" ", e.escape("\u00A0"));
     }
 
+    public void testNumberOverflow() throws Exception {
+        doTestUnescapeEntity("�", "�");
+        doTestUnescapeEntity("x�y", "x�y");
+        doTestUnescapeEntity("�", "�");
+        doTestUnescapeEntity("x�y", "x�y");
+    }
+
+
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to