Skip to content
Snippets Groups Projects
  • Nat Goodspeed's avatar
    1fc7c994
    DRTVWR-494: Fix VS LLError::Log::demangle() vulnerability. · 1fc7c994
    Nat Goodspeed authored
    The Windows implementation of demangle() assumed that a "mangled" class name
    produced by typeid(class).name() always starts with the prefix "class ",
    checked for that and removed it. If the mangled name didn't start with that
    prefix, it would emit a debug message and return the full name.
    
    When the class in question is actually a struct, the prefix is "struct "
    instead. But when demangle() was being called before logging had been fully
    initialized, the debug message remarking that it didn't start with "class "
    crashed.
    
    Look for either "class " or "struct " prefix. Remove whichever is found and
    return the rest of the name. If neither is found, only log if logging is
    available.
    1fc7c994
    History
    DRTVWR-494: Fix VS LLError::Log::demangle() vulnerability.
    Nat Goodspeed authored
    The Windows implementation of demangle() assumed that a "mangled" class name
    produced by typeid(class).name() always starts with the prefix "class ",
    checked for that and removed it. If the mangled name didn't start with that
    prefix, it would emit a debug message and return the full name.
    
    When the class in question is actually a struct, the prefix is "struct "
    instead. But when demangle() was being called before logging had been fully
    initialized, the debug message remarking that it didn't start with "class "
    crashed.
    
    Look for either "class " or "struct " prefix. Remove whichever is found and
    return the rest of the name. If neither is found, only log if logging is
    available.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.