Лулзный крэш в CL от Visual Studio 2012.. Причиной которой являеться __if_exists. (http://msdn.microsoft.com/en-us/library/x7wy9xh3.aspx)
Промах в токене. Так
что теоритически возможна "эксплотация при компиляции" . Что значит
исходной код на С++ может получить управление во время компиляции. Что весьма
доставляет. В даном случае в нем нет смысла(быстрый анализ) из таблицы
получает(массива) нолувой указатель, что приводит к крэшу.
c1xx!TokenStreamStack::getToken+0x37:
55e46237 41 inc ecx
55e46238 8b348e mov esi,dword ptr [esi+ecx*4]
55e4623b 89481c mov dword ptr [eax+1Ch],ecx
55e4623e 8b06
mov eax,dword ptr [esi] //
crash: esi == null
55e46240 3d20020000 cmp eax,220h
55e46245 7f2a jg c1xx!TokenStreamStack::getToken+0x71
(55e46271)
55e46247 5f pop edi
55e46248 8bc6 mov eax,esi
CallStack
0:000> k
ChildEBP RetAddr
002ce240 55ea24fe c1xx!TokenStreamStack::getToken+0x3e
002ce260 55e45e2f c1xx!LexerHandleIfExists+0x1ee
002ce280 55e653cc c1xx!yylex+0x7ef
002ce298 55df2734 c1xx!DeclarationParser::Parse+0x25c
002ce30c 55e3e9bc c1xx!CallDisambigParser+0x434
002ce328 55e48655 c1xx!DisambiguateCtor+0xac
002ce694 55df5226 c1xx!PrimaryParser::Parse+0x1e85
002ce710 55e530db c1xx!CallPrimaryParser+0xf6
002cea70 55e52a15 c1xx!main_compile+0x1bb
002ceaa8 55e51354 c1xx!Trap_main_compile+0x15
002cead0 55e5128e c1xx!CallMain+0x94
002ceb08 55e51181 c1xx!Trap_CallMain+0x1e
002ceb24 00e3e0fd c1xx!InvokeCompilerPassW+0x41
002ceb84 00e3e2f1 cl!execute+0x15d
002cebc0 00e3de25 cl!dopass+0xe1
002cebd8 00e4159a cl!passes+0x40
002cf414 00e44664 cl!compile_worklist+0x2fb
002cfc50 00e42b9b cl!compile+0xe4
002cfd78 00e45b67 cl!wmain+0x4ab
002cfdb8 759633aa cl!_wsetargv+0x232
002cfdc4 77a79f72 kernel32!BaseThreadInitThunk+0xe
002cfe04 77a79f45 ntdll!__RtlUserThreadStart+0x70
002cfe1c 00000000 ntdll!_RtlUserThreadStart+0x1b
"Главный достовлятор" - это
что крэш возникает при компиляции одной строчки кода.
class A { A(__if_exists(B){} ) {;} }; void main() { }
Интерестно это так же тем что 16 лет
спустя(с Visual Studio 97), а "детские ошибки" таки остались...
Комментариев нет:
Отправить комментарий