Commit d31c4d90778eefa0219fab30451eb8b3f23e01a6

Authored by Vincent Brillault
1 parent d57401a8

oleform: extract caption from labels

Showing 1 changed file with 16 additions and 1 deletions
oletools/oleform.py
@@ -415,7 +415,21 @@ def consume_LabelControl(stream): @@ -415,7 +415,21 @@ def consume_LabelControl(stream):
415 cbLabel = stream.unpack('<H', 2) 415 cbLabel = stream.unpack('<H', 2)
416 with stream.will_jump_to(cbLabel): 416 with stream.will_jump_to(cbLabel):
417 propmask = LabelPropMask(stream.unpack('<L', 4)) 417 propmask = LabelPropMask(stream.unpack('<L', 4))
418 - # Skip the DataBlock and the ExtraDataBlock 418 + # LabelDataBlock: [MS-OFORMS] 2.2.4.3
  419 + with stream.padded_struct():
  420 + propmask.consume(stream, [('fForeColor', 4), ('fBackColor', 4),
  421 + ('fVariousPropertyBits', 4)])
  422 + if propmask.fCaption:
  423 + caption_size = consume_CountOfBytesWithCompressionFlag(stream)
  424 + else:
  425 + caption_size = 0
  426 + propmask.consume(stream, [('fPicturePosition', 4), ('fMousePointer', 1),
  427 + ('fBorderColor', 4), ('fBorderStyle', 2),
  428 + ('fSpecialEffect', 2), ('fPicture', 2),
  429 + ('fAccelerator', 2), ('fMouseIcon', 2)])
  430 + # LabelExtraDataBlock: [MS-OFORMS] 2.2.4.4
  431 + caption = stream.read(caption_size)
  432 + stream.read(8)
419 # LabelStreamData: [MS-OFORMS] 2.2.4.5 433 # LabelStreamData: [MS-OFORMS] 2.2.4.5
420 if propmask.fPicture: 434 if propmask.fPicture:
421 consume_GuidAndPicture(stream) 435 consume_GuidAndPicture(stream)
@@ -423,6 +437,7 @@ def consume_LabelControl(stream): @@ -423,6 +437,7 @@ def consume_LabelControl(stream):
423 consume_GuidAndPicture(stream) 437 consume_GuidAndPicture(stream)
424 # TextProps 438 # TextProps
425 consume_TextProps(stream) 439 consume_TextProps(stream)
  440 + return caption
426 441
427 def consume_ScrollBarControl(stream): 442 def consume_ScrollBarControl(stream):
428 # ScrollBarControl: [MS-OFORMS] 2.2.7.1 443 # ScrollBarControl: [MS-OFORMS] 2.2.7.1