Skip to content

Handle FORWARD REF leaves with no UDT #320

@disinvite

Description

@disinvite

We handle forward references for LF_STRUCTURE or LF_CLASS leaves by checking if the field list type is 0x0000. We don't parse the FORWARD REF attribute at all. If not equal to the leaf id, the UDT value tells what other leaf is referenced. This typically looks like:

0x2e94 : Length = 38, Leaf = 0x1504 LF_CLASS
	# members = 0,  field list type 0x0000, FORWARD REF, 
	Derivation list type 0x0000, VT shape type 0x0000
	Size = 0, class name = MxStreamProvider, UDT(0x0000b203)

However, some forward refs have no UDT at all:

0x2562 : Length = 30, Leaf = 0x1505 LF_STRUCTURE
        # members = 0,  field list type 0x0000, FORWARD REF,
        Derivation list type 0x0000, VT shape type 0x0000
        Size = 0, class name = HWND__

We have somehow avoided this problem up until now. It must be that these types are not referenced anywhere that we have been looking in either reccmp or datacmp.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions