]> source.dussan.org Git - poi.git/commitdiff
If the username length in the CurrentUserAtom is clearly wrong, treat it as if there...
authorNick Burch <nick@apache.org>
Thu, 1 Mar 2007 15:59:56 +0000 (15:59 +0000)
committerNick Burch <nick@apache.org>
Thu, 1 Mar 2007 15:59:56 +0000 (15:59 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@513391 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hslf/record/CurrentUserAtom.java

index 4b49a7adc970ef7c086c871416fa76e3cca6dda7..91a5485230dbfd444ce2cb5c8742490672e27e8e 100644 (file)
@@ -135,9 +135,20 @@ public class CurrentUserAtom
 
                // Get the username length
                long usernameLen = LittleEndian.getUShort(_contents,20);
+               if(usernameLen > 512) {
+                       // Handle the case of it being garbage
+                       System.err.println("Warning - invalid username length " + usernameLen + " found, treating as if there was no username set");
+                       usernameLen = 0;
+               }
 
-               // Use this to grab the revision
-               releaseVersion = LittleEndian.getUInt(_contents,28+(int)usernameLen);
+               // Now we know the length of the username, 
+               //  use this to grab the revision
+               if(_contents.length >= 28+(int)usernameLen + 4) {
+                       releaseVersion = LittleEndian.getUInt(_contents,28+(int)usernameLen);
+               } else {
+                       // No revision given, as not enough data. Odd
+                       releaseVersion = 0;
+               }
 
                // Grab the unicode username, if stored
                int start = 28+(int)usernameLen+4;