If the username length in the CurrentUserAtom is clearly wrong, treat it as if there was no username, rather than giving an ArrayIndexOutOfBoundsException

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@513391 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2007-03-01 15:59:56 +00:00
parent 8af09b2475
commit 2e4f27d57b

View 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;