[all-commits] [llvm/llvm-project] bd2044: [CodeView] Call llvm::codeview::visitMemberRecordS...

Zequan Wu via All-commits all-commits at lists.llvm.org
Wed Jun 29 17:19:13 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: bd2044c108655dc6409e2c724349219d3971b151
      https://github.com/llvm/llvm-project/commit/bd2044c108655dc6409e2c724349219d3971b151
  Author: Zequan Wu <zequanwu at google.com>
  Date:   2022-06-29 (Wed, 29 Jun 2022)

  Changed paths:
    M lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
    M lldb/source/Plugins/SymbolFile/NativePDB/PdbUtil.cpp
    M llvm/lib/DebugInfo/PDB/Native/NativeTypeEnum.cpp
    M llvm/lib/ObjectYAML/CodeViewYAMLTypes.cpp

  Log Message:
  -----------
  [CodeView] Call llvm::codeview::visitMemberRecordStream with the deserialized CVType whose kind is FieldListRecord.

llvm::codeview::visitMemberRecordStream expects to receive an array ref that's FieldListRecord's Data not a CVType's data which has 4 more bytes preceeding. The first 2 bytes indicate the size of the FieldListRecord, and following 2 bytes is always 0x1203. Inside llvm::codeview::visitMemberRecordStream, it iterates to the data to check if first two bytes matching some type record kinds. If the size coincidentally matches one type kind, it will start parsing from there and causing crash.




More information about the All-commits mailing list