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:
parent
8af09b2475
commit
2e4f27d57b
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user