src/docdirstream.py | 3 +++ src/docrecord.py | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-)
New commits: commit 7918464989883ee64b7dd0bb5b602b6b791e100d Author: Miklos Vajna <vmik...@suse.cz> Date: Fri May 24 17:37:17 2013 +0200 Selsf: check for the size from the spec E.g. fdo45983-1.doc has some additional bytes after the documented struct. diff --git a/src/docrecord.py b/src/docrecord.py index 0563cb2..c2a73d0 100644 --- a/src/docrecord.py +++ b/src/docrecord.py @@ -337,6 +337,7 @@ class Sty(DOCDirStream): self.parent.pos = self.pos class Selsf(DOCDirStream): + size = 36 # defined by 2.9.241 """The Selsf structure specifies the last selection that was made to the document.""" def __init__(self, mainStream): DOCDirStream.__init__(self, mainStream.getTableStream().bytes) @@ -380,7 +381,7 @@ class Selsf(DOCDirStream): self.printAndSet("cpAnchorShrink", self.readuInt32()) self.printAndSet("xaTableLeft", self.readInt16()) self.printAndSet("xaTableRight", self.readInt16()) - assert self.pos == self.mainStream.fcWss + self.size + assert self.pos == self.mainStream.fcWss + Selsf.size print '</selsf>' class BRC(DOCDirStream): commit aad5403441fed65a8fecefc10d147a066c0a521f Author: Miklos Vajna <vmik...@suse.cz> Date: Fri May 24 17:06:22 2013 +0200 Sprm: don't read 4 bytes when operand size is 3 Triggered by fdo45100-1.doc diff --git a/src/docdirstream.py b/src/docdirstream.py index 4e29943..c3e4207 100644 --- a/src/docdirstream.py +++ b/src/docdirstream.py @@ -78,6 +78,9 @@ class DOCDirStream: self.pos += 2 return ret + def getuInt24(self): + return struct.unpack("<I", self.bytes[self.pos:self.pos+3] + "\x00")[0] + def getuInt32(self, bytes = None, pos = None): if not bytes: bytes = self.bytes diff --git a/src/docrecord.py b/src/docrecord.py index 8d90b51..0563cb2 100644 --- a/src/docrecord.py +++ b/src/docrecord.py @@ -732,7 +732,7 @@ class Sprm(DOCDirStream): elif self.getOperandSize() == 2: self.operand = self.getuInt16() elif self.getOperandSize() == 3: - self.operand = self.getuInt32() & 0x0fff + self.operand = self.getuInt24() elif self.getOperandSize() == 4: self.operand = self.getuInt32() elif self.getOperandSize() == 7: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits