From 78697903fc4b600dd039746a8c08493a96fdb56c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 14 Mar 2025 18:43:06 +0000 Subject: [PATCH 1/4] C++: Move ATL models to ATL namespace. --- cpp/ql/lib/ext/CA2CAEX.model.yml | 26 +- cpp/ql/lib/ext/CAtlArray.model.yml | 20 +- cpp/ql/lib/ext/CAtlFile.model.yml | 8 +- cpp/ql/lib/ext/CAtlFileMappingBase.model.yml | 18 +- cpp/ql/lib/ext/CAtlList.model.yml | 20 +- cpp/ql/lib/ext/CAtlTemporaryFile.model.yml | 6 +- cpp/ql/lib/ext/CComBSTR.model.yml | 56 ++--- cpp/ql/lib/ext/CComSafeArray.model.yml | 42 ++-- cpp/ql/lib/ext/CPathT.model.yml | 34 +-- cpp/ql/lib/ext/CRegKey.model.yml | 30 +-- cpp/ql/lib/ext/CSimpleArray.model.yml | 14 +- cpp/ql/lib/ext/CSimpleMap.model.yml | 16 +- cpp/ql/lib/ext/CSimpleStringT.model.yml | 74 +++--- cpp/ql/lib/ext/CStrBufT.model.yml | 6 +- cpp/ql/lib/ext/CStringData.model.yml | 2 +- cpp/ql/lib/ext/CStringT.model.yml | 226 +++++++++--------- cpp/ql/lib/ext/CUrl.model.yml | 34 +-- .../cpp/models/implementations/CA2AEX.qll | 2 +- .../cpp/models/implementations/CAtlFile.qll | 2 +- .../implementations/CAtlFileMapping.qll | 4 +- .../implementations/CAtlTemporaryFile.qll | 2 +- .../cpp/models/implementations/CComBSTR.qll | 2 +- .../cpp/models/implementations/CPathT.qll | 2 +- .../cpp/models/implementations/CRegKey.qll | 2 +- 24 files changed, 324 insertions(+), 324 deletions(-) diff --git a/cpp/ql/lib/ext/CA2CAEX.model.yml b/cpp/ql/lib/ext/CA2CAEX.model.yml index ee1d53a537c..6370e452b09 100644 --- a/cpp/ql/lib/ext/CA2CAEX.model.yml +++ b/cpp/ql/lib/ext/CA2CAEX.model.yml @@ -3,16 +3,16 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "_U_STRINGorID", True, "_U_STRINGorID", "(UINT)", "", "Argument[0]", "Argument[-1].Field[*m_lpstr]", "value", "manual"] - - ["", "_U_STRINGorID", True, "_U_STRINGorID", "(LPCTSTR)", "", "Argument[*0]", "Argument[-1].Field[*m_lpstr]", "value", "manual"] - - ["", "CA2AEX", True, "CA2AEX", "", "", "Argument[*0]", "Argument[-1].Field[*m_psz]", "value", "manual"] - - ["", "CA2AEX", True, "CA2AEX", "", "", "Argument[*0]", "Argument[-1].Field[m_szBuffer]", "value", "manual"] - - ["", "CA2AEX", True, "operator LPSTR", "", "", "Argument[-1].Field[*m_psz]", "ReturnValue[*]", "value", "manual"] - - ["", "CA2AEX", True, "CA2AEX", "", "", "Argument[*0]", "Argument[-1].Field[m_szBuffer]", "value", "manual"] - - ["", "CA2AEX", True, "operator LPSTR", "", "", "Argument[-1].Field[m_szBuffer]", "ReturnValue[*]", "value", "manual"] - - ["", "CA2CAEX", True, "CA2CAEX", "", "", "Argument[*0]", "Argument[-1].Field[*m_psz]", "value", "manual"] - - ["", "CA2CAEX", True, "operator LPCSTR", "", "", "Argument[-1].Field[*m_psz]", "ReturnValue[*]", "value", "manual"] - - ["", "CA2WEX", True, "CA2WEX", "", "", "Argument[*0]", "Argument[-1].Field[*m_psz]", "value", "manual"] - - ["", "CA2WEX", True, "operator LPWSTR", "", "", "Argument[-1].Field[*m_psz]", "ReturnValue[*]", "value", "manual"] - - ["", "CA2WEX", True, "CA2WEX", "", "", "Argument[*0]", "Argument[-1].Field[m_szBuffer]", "value", "manual"] - - ["", "CA2WEX", True, "operator LPWSTR", "", "", "Argument[-1].Field[m_szBuffer]", "ReturnValue[*]", "value", "manual"] \ No newline at end of file + - ["ATL", "_U_STRINGorID", True, "_U_STRINGorID", "(UINT)", "", "Argument[0]", "Argument[-1].Field[*m_lpstr]", "value", "manual"] + - ["ATL", "_U_STRINGorID", True, "_U_STRINGorID", "(LPCTSTR)", "", "Argument[*0]", "Argument[-1].Field[*m_lpstr]", "value", "manual"] + - ["ATL", "CA2AEX", True, "CA2AEX", "", "", "Argument[*0]", "Argument[-1].Field[*m_psz]", "value", "manual"] + - ["ATL", "CA2AEX", True, "CA2AEX", "", "", "Argument[*0]", "Argument[-1].Field[m_szBuffer]", "value", "manual"] + - ["ATL", "CA2AEX", True, "operator LPSTR", "", "", "Argument[-1].Field[*m_psz]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CA2AEX", True, "CA2AEX", "", "", "Argument[*0]", "Argument[-1].Field[m_szBuffer]", "value", "manual"] + - ["ATL", "CA2AEX", True, "operator LPSTR", "", "", "Argument[-1].Field[m_szBuffer]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CA2CAEX", True, "CA2CAEX", "", "", "Argument[*0]", "Argument[-1].Field[*m_psz]", "value", "manual"] + - ["ATL", "CA2CAEX", True, "operator LPCSTR", "", "", "Argument[-1].Field[*m_psz]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CA2WEX", True, "CA2WEX", "", "", "Argument[*0]", "Argument[-1].Field[*m_psz]", "value", "manual"] + - ["ATL", "CA2WEX", True, "operator LPWSTR", "", "", "Argument[-1].Field[*m_psz]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CA2WEX", True, "CA2WEX", "", "", "Argument[*0]", "Argument[-1].Field[m_szBuffer]", "value", "manual"] + - ["ATL", "CA2WEX", True, "operator LPWSTR", "", "", "Argument[-1].Field[m_szBuffer]", "ReturnValue[*]", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/CAtlArray.model.yml b/cpp/ql/lib/ext/CAtlArray.model.yml index 29afc0c9959..1b22fcff788 100644 --- a/cpp/ql/lib/ext/CAtlArray.model.yml +++ b/cpp/ql/lib/ext/CAtlArray.model.yml @@ -3,13 +3,13 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CAtlArray", True, "Add", "", "", "Argument[*@0]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlArray", True, "Append", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlArray", True, "Copy", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlArray", True, "GetAt", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CAtlArray", True, "GetData", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CAtlArray", True, "InsertArrayAt", "", "", "Argument[*1].Element[@]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlArray", True, "InsertAt", "", "", "Argument[@1]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlArray", True, "SetAt", "", "", "Argument[@1]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlArray", True, "SetAtGrow", "", "", "Argument[@1]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlArray", True, "operator[]", "", "", "Argument[-1].Element[@]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CAtlArray", True, "Add", "", "", "Argument[*@0]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "Append", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "Copy", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "GetAt", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "GetData", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "InsertArrayAt", "", "", "Argument[*1].Element[@]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "InsertAt", "", "", "Argument[@1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "SetAt", "", "", "Argument[@1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "SetAtGrow", "", "", "Argument[@1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlArray", True, "operator[]", "", "", "Argument[-1].Element[@]", "ReturnValue[*]", "value", "manual"] diff --git a/cpp/ql/lib/ext/CAtlFile.model.yml b/cpp/ql/lib/ext/CAtlFile.model.yml index 03584d62f03..85205ecfe12 100644 --- a/cpp/ql/lib/ext/CAtlFile.model.yml +++ b/cpp/ql/lib/ext/CAtlFile.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CAtlFile", True, "CAtlFile", "(CAtlFile &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CAtlFile", True, "CAtlFile", "(HANDLE)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CAtlFile", True, "Create", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CAtlFile", True, "Read", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CAtlFile", True, "CAtlFile", "(CAtlFile &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CAtlFile", True, "CAtlFile", "(HANDLE)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CAtlFile", True, "Create", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CAtlFile", True, "Read", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/CAtlFileMappingBase.model.yml b/cpp/ql/lib/ext/CAtlFileMappingBase.model.yml index e8ccc9b2fd3..78b83e8920a 100644 --- a/cpp/ql/lib/ext/CAtlFileMappingBase.model.yml +++ b/cpp/ql/lib/ext/CAtlFileMappingBase.model.yml @@ -3,12 +3,12 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CAtlFileMappingBase", True, "CAtlFileMappingBase", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CAtlFileMappingBase", True, "CopyFrom", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CAtlFileMappingBase", True, "GetData", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CAtlFileMappingBase", True, "GetHandle", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CAtlFileMappingBase", True, "MapFile", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CAtlFileMappingBase", True, "MapSharedMem", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] - - ["", "CAtlFileMappingBase", True, "OpenMapping", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CAtlFileMappingBase", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CAtlFileMappingBase", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "CAtlFileMappingBase", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "CopyFrom", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "GetData", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "GetHandle", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "MapFile", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "MapSharedMem", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "OpenMapping", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CAtlFileMappingBase", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] diff --git a/cpp/ql/lib/ext/CAtlList.model.yml b/cpp/ql/lib/ext/CAtlList.model.yml index 6d952f2ca13..4ed1c2a4a9d 100644 --- a/cpp/ql/lib/ext/CAtlList.model.yml +++ b/cpp/ql/lib/ext/CAtlList.model.yml @@ -3,13 +3,13 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CAtlList", True, "AddHead", "", "", "Argument[*@0]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlList", True, "AddHeadList", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlList", True, "AddTail", "", "", "Argument[*@0]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlList", True, "AddTailList", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlList", True, "GetAt", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CAtlList", True, "GetHead", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CAtlList", True, "GetTail", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CAtlList", True, "InsertAfter", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlList", True, "InsertBefore", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CAtlList", True, "SetAt", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlList", True, "AddHead", "", "", "Argument[*@0]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlList", True, "AddHeadList", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlList", True, "AddTail", "", "", "Argument[*@0]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlList", True, "AddTailList", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlList", True, "GetAt", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CAtlList", True, "GetHead", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CAtlList", True, "GetTail", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CAtlList", True, "InsertAfter", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlList", True, "InsertBefore", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CAtlList", True, "SetAt", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] diff --git a/cpp/ql/lib/ext/CAtlTemporaryFile.model.yml b/cpp/ql/lib/ext/CAtlTemporaryFile.model.yml index 71a05266a2d..d2486eb1fa1 100644 --- a/cpp/ql/lib/ext/CAtlTemporaryFile.model.yml +++ b/cpp/ql/lib/ext/CAtlTemporaryFile.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CAtlTemporaryFile", True, "Create", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CAtlTemporaryFile", True, "Read", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - - ["", "CAtlTemporaryFile", True, "Write", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CAtlTemporaryFile", True, "Create", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CAtlTemporaryFile", True, "Read", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CAtlTemporaryFile", True, "Write", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/CComBSTR.model.yml b/cpp/ql/lib/ext/CComBSTR.model.yml index d31f3e36a51..8848905aff1 100644 --- a/cpp/ql/lib/ext/CComBSTR.model.yml +++ b/cpp/ql/lib/ext/CComBSTR.model.yml @@ -3,31 +3,31 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CComBSTR", True, "CComBSTR", "(LPCSTR)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "CComBSTR", "(LPCOLESTR)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "CComBSTR", "(int,LPCSTR)", "", "Argument[*1]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "CComBSTR", "(int,LPCOLESTR)", "", "Argument[*1]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "CComBSTR", "(const CComBSTR &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "CComBSTR", "(CComBSTR &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "Append", "(const CComBSTR &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "Append", "(wchar_t)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "Append", "(char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "Append", "(LPCOLESTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "Append", "(LPCSTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "Append", "(LPCOLESTR,int)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "AppendBytes", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "AppendBSTR", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "ArrayToBSTR", "", "", "Argument[*0].Field[*pvData]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "AssignBSTR", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "Attach", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CComBSTR", True, "BSTRToArray", "", "", "Argument[-1]", "Argument[**0].Field[*pvData]", "value", "manual"] - - ["", "CComBSTR", True, "Copy", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CComBSTR", True, "CopyTo", "", "", "Argument[-1]", "Argument[*0]", "value", "manual"] - - ["", "CComBSTR", True, "LoadString", "(HINSTANCE,UINT)", "", "Argument[1]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "LoadString", "(UINT)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "ReadFromStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CComBSTR", True, "WriteToStream", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - - ["", "CComBSTR", True, "operator BSTR", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CComBSTR", True, "operator&", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CComBSTR", True, "operator+=", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "CComBSTR", True, "operator+=", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] \ No newline at end of file + - ["ATL", "CComBSTR", True, "CComBSTR", "(LPCSTR)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "CComBSTR", "(LPCOLESTR)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "CComBSTR", "(int,LPCSTR)", "", "Argument[*1]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "CComBSTR", "(int,LPCOLESTR)", "", "Argument[*1]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "CComBSTR", "(const CComBSTR &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "CComBSTR", "(CComBSTR &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "Append", "(const CComBSTR &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "Append", "(wchar_t)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "Append", "(char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "Append", "(LPCOLESTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "Append", "(LPCSTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "Append", "(LPCOLESTR,int)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "AppendBytes", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "AppendBSTR", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "ArrayToBSTR", "", "", "Argument[*0].Field[*pvData]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "AssignBSTR", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "Attach", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComBSTR", True, "BSTRToArray", "", "", "Argument[-1]", "Argument[**0].Field[*pvData]", "value", "manual"] + - ["ATL", "CComBSTR", True, "Copy", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CComBSTR", True, "CopyTo", "", "", "Argument[-1]", "Argument[*0]", "value", "manual"] + - ["ATL", "CComBSTR", True, "LoadString", "(HINSTANCE,UINT)", "", "Argument[1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "LoadString", "(UINT)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "ReadFromStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "WriteToStream", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "operator BSTR", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "operator&", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CComBSTR", True, "operator+=", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CComBSTR", True, "operator+=", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/CComSafeArray.model.yml b/cpp/ql/lib/ext/CComSafeArray.model.yml index 61aec61e7d2..0067c7aab08 100644 --- a/cpp/ql/lib/ext/CComSafeArray.model.yml +++ b/cpp/ql/lib/ext/CComSafeArray.model.yml @@ -3,24 +3,24 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CComSafeArray", True, "CComSafeArray", "(const CComSafeArray &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CComSafeArray", True, "CComSafeArray", "(const SAFEARRAY &)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] - - ["", "CComSafeArray", True, "CComSafeArray", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] - - ["", "CComSafeArray", True, "Add", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] - - ["", "CComSafeArray", True, "Add", "(const T &,BOOL)", "", "Argument[*@0]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"] - - ["", "CComSafeArray", True, "Attach", "", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] - - ["", "CComSafeArray", True, "CopyFrom", "", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] - - ["", "CComSafeArray", True, "CopyTo", "", "", "Argument[-1].Field[*m_psa]", "Argument[*0]", "value", "manual"] - - ["", "CComSafeArray", True, "GetAt", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "ReturnValue[*@]", "value", "manual"] - - ["", "CComSafeArray", True, "GetLowerBound", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CComSafeArray", True, "GetSafeArrayPtr", "", "", "Argument[-1].Field[*m_psa]", "ReturnValue[*]", "value", "manual"] - - ["", "CComSafeArray", True, "GetUpperBound", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CComSafeArray", True, "MultiDimGetAt", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "Argument[*@1]", "value", "manual"] - - ["", "CComSafeArray", True, "MultiDimSetAt", "", "", "Argument[*@1]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"] - - ["", "CComSafeArray", True, "SetAt", "", "", "Argument[*@1]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"] - - ["", "CComSafeArray", True, "operator LPSAFEARRAY", "", "", "Argument[-1].Field[*m_psa]", "ReturnValue[*]", "value", "manual"] - - ["", "CComSafeArray", True, "operator[]", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "ReturnValue[*@]", "value", "manual"] - - ["", "CComSafeArray", True, "operator=", "(const CComSafeArray &)", "", "Argument[*0].Field[*m_psa]", "ReturnValue[*]", "value", "manual"] - - ["", "CComSafeArray", True, "operator=", "(const CComSafeArray &)", "", "Argument[*0].Field[*m_psa]", "Argument[-1].Field[*m_psa]", "value", "manual"] - - ["", "CComSafeArray", True, "operator=", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] - - ["", "CComSafeArray", True, "operator=", "(const SAFEARRAY *)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] \ No newline at end of file + - ["ATL", "CComSafeArray", True, "CComSafeArray", "(const CComSafeArray &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "CComSafeArray", "(const SAFEARRAY &)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "CComSafeArray", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "Add", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "Add", "(const T &,BOOL)", "", "Argument[*@0]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "Attach", "", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "CopyFrom", "", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "CopyTo", "", "", "Argument[-1].Field[*m_psa]", "Argument[*0]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "GetAt", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "GetLowerBound", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CComSafeArray", True, "GetSafeArrayPtr", "", "", "Argument[-1].Field[*m_psa]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "GetUpperBound", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CComSafeArray", True, "MultiDimGetAt", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "Argument[*@1]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "MultiDimSetAt", "", "", "Argument[*@1]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "SetAt", "", "", "Argument[*@1]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "operator LPSAFEARRAY", "", "", "Argument[-1].Field[*m_psa]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "operator[]", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "operator=", "(const CComSafeArray &)", "", "Argument[*0].Field[*m_psa]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "operator=", "(const CComSafeArray &)", "", "Argument[*0].Field[*m_psa]", "Argument[-1].Field[*m_psa]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "operator=", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"] + - ["ATL", "CComSafeArray", True, "operator=", "(const SAFEARRAY *)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/CPathT.model.yml b/cpp/ql/lib/ext/CPathT.model.yml index 870e7ac5536..874a791a8b2 100644 --- a/cpp/ql/lib/ext/CPathT.model.yml +++ b/cpp/ql/lib/ext/CPathT.model.yml @@ -3,21 +3,21 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CPathT", True, "CPathT", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CPathT", True, "AddExtension", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CPathT", True, "Append", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CPathT", True, "Combine", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CPathT", True, "Combine", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] - - ["", "CPathT", True, "CommonPrefix", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"] - - ["", "CPathT", True, "CommonPrefix", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CPathT", True, "GetExtension", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CPathT", True, "RelativePathTo", "", "", "Argument[*0]", "ReturnValue[-1]", "taint", "manual"] - - ["", "CPathT", True, "RelativePathTo", "", "", "Argument[*2]", "ReturnValue[-1]", "taint", "manual"] - - ["", "CPathT", True, "RenameExtension", "", "", "Argument[*0]", "ReturnValue[-1]", "taint", "manual"] + - ["ATL", "CPathT", True, "CPathT", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CPathT", True, "AddExtension", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CPathT", True, "Append", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CPathT", True, "Combine", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CPathT", True, "Combine", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CPathT", True, "CommonPrefix", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"] + - ["ATL", "CPathT", True, "CommonPrefix", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CPathT", True, "GetExtension", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CPathT", True, "RelativePathTo", "", "", "Argument[*0]", "ReturnValue[-1]", "taint", "manual"] + - ["ATL", "CPathT", True, "RelativePathTo", "", "", "Argument[*2]", "ReturnValue[-1]", "taint", "manual"] + - ["ATL", "CPathT", True, "RenameExtension", "", "", "Argument[*0]", "ReturnValue[-1]", "taint", "manual"] # Note: These don't work currently since we cannot use the template parameter in the name of the function - # - ["", "CPathT", True, "operator const T &", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - # - ["", "CPathT", True, "operator T &", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CPathT", True, "operator PCXSTR", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CPathT", True, "operator+=", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CPathT", True, "operator+=", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "CPathT", True, "operator+=", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # - ["ATL", "CPathT", True, "operator const T &", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + # - ["ATL", "CPathT", True, "operator T &", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CPathT", True, "operator PCXSTR", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CPathT", True, "operator+=", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CPathT", True, "operator+=", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CPathT", True, "operator+=", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/CRegKey.model.yml b/cpp/ql/lib/ext/CRegKey.model.yml index 1cf2a7d6773..b601cabefd8 100644 --- a/cpp/ql/lib/ext/CRegKey.model.yml +++ b/cpp/ql/lib/ext/CRegKey.model.yml @@ -3,18 +3,18 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CRegKey", True, "CRegKey", "(CRegKey &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CRegKey", True, "CRegKey", "(HKEY)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CRegKey", True, "Create", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] - - ["", "CRegKey", True, "Attach", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CRegKey", True, "QueryBinaryValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] - - ["", "CRegKey", True, "QueryDWORDValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] - - ["", "CRegKey", True, "QueryMultiStringValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] - - ["", "CRegKey", True, "QueryQWORDValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] - - ["", "CRegKey", True, "QueryStringValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] - - ["", "CRegKey", True, "QueryValue", "(LPCTSTR,DWORD *,void *,ULONG *)", "", "Argument[*0]", "Argument[*2]", "taint", "manual"] - - ["", "CRegKey", True, "QueryValue", "(DWORD &,LPCTSTR)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] - - ["", "CRegKey", True, "QueryValue", "(LPTSTR,LPCTSTR,DWORD *)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] - - ["", "CRegKey", True, "operator HKEY", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CRegKey", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] - - ["", "CRegKey", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] \ No newline at end of file + - ["ATL", "CRegKey", True, "CRegKey", "(CRegKey &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CRegKey", True, "CRegKey", "(HKEY)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CRegKey", True, "Create", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CRegKey", True, "Attach", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CRegKey", True, "QueryBinaryValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["ATL", "CRegKey", True, "QueryDWORDValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["ATL", "CRegKey", True, "QueryMultiStringValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["ATL", "CRegKey", True, "QueryQWORDValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["ATL", "CRegKey", True, "QueryStringValue", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["ATL", "CRegKey", True, "QueryValue", "(LPCTSTR,DWORD *,void *,ULONG *)", "", "Argument[*0]", "Argument[*2]", "taint", "manual"] + - ["ATL", "CRegKey", True, "QueryValue", "(DWORD &,LPCTSTR)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CRegKey", True, "QueryValue", "(LPTSTR,LPCTSTR,DWORD *)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CRegKey", True, "operator HKEY", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CRegKey", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CRegKey", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/CSimpleArray.model.yml b/cpp/ql/lib/ext/CSimpleArray.model.yml index 8daae929651..d662b7afe2a 100644 --- a/cpp/ql/lib/ext/CSimpleArray.model.yml +++ b/cpp/ql/lib/ext/CSimpleArray.model.yml @@ -3,10 +3,10 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CSimpleArray", True, "CSimpleArray", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CSimpleArray", True, "Add", "", "", "Argument[*0]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CSimpleArray", True, "GetData", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CSimpleArray", True, "SetAtIndex", "", "", "Argument[*1]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CSimpleArray", True, "operator[]", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CSimpleArray", True, "operator=", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CSimpleArray", True, "operator=", "", "", "Argument[*0].Element[@]", "ReturnValue[*].Element[@]", "value", "manual"] \ No newline at end of file + - ["ATL", "CSimpleArray", True, "CSimpleArray", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CSimpleArray", True, "Add", "", "", "Argument[*0]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CSimpleArray", True, "GetData", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CSimpleArray", True, "SetAtIndex", "", "", "Argument[*1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CSimpleArray", True, "operator[]", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CSimpleArray", True, "operator=", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CSimpleArray", True, "operator=", "", "", "Argument[*0].Element[@]", "ReturnValue[*].Element[@]", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/CSimpleMap.model.yml b/cpp/ql/lib/ext/CSimpleMap.model.yml index 1d9422a0561..9558cad0caa 100644 --- a/cpp/ql/lib/ext/CSimpleMap.model.yml +++ b/cpp/ql/lib/ext/CSimpleMap.model.yml @@ -3,11 +3,11 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CSimpleMap", True, "Add", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CSimpleMap", True, "GetValueAt", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CSimpleMap", True, "Lookup", "", "", "Argument[-1].Element[@]", "ReturnValue.Element[@]", "value", "manual"] - - ["", "CSimpleMap", True, "SetAt", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CSimpleMap", True, "SetAtIndex", "", "", "Argument[*@2]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CSimpleMap", True, "operator[]", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] - - ["", "CSimpleMap", True, "operator=", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] - - ["", "CSimpleMap", True, "operator=", "", "", "Argument[*0].Element[@]", "ReturnValue[*].Element[@]", "value", "manual"] \ No newline at end of file + - ["ATL", "CSimpleMap", True, "Add", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CSimpleMap", True, "GetValueAt", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CSimpleMap", True, "Lookup", "", "", "Argument[-1].Element[@]", "ReturnValue.Element[@]", "value", "manual"] + - ["ATL", "CSimpleMap", True, "SetAt", "", "", "Argument[*@1]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CSimpleMap", True, "SetAtIndex", "", "", "Argument[*@2]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CSimpleMap", True, "operator[]", "", "", "Argument[-1].Element[@]", "ReturnValue[*@]", "value", "manual"] + - ["ATL", "CSimpleMap", True, "operator=", "", "", "Argument[*0].Element[@]", "Argument[-1].Element[@]", "value", "manual"] + - ["ATL", "CSimpleMap", True, "operator=", "", "", "Argument[*0].Element[@]", "ReturnValue[*].Element[@]", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/CSimpleStringT.model.yml b/cpp/ql/lib/ext/CSimpleStringT.model.yml index 9902e5b6000..9554103994e 100644 --- a/cpp/ql/lib/ext/CSimpleStringT.model.yml +++ b/cpp/ql/lib/ext/CSimpleStringT.model.yml @@ -3,40 +3,40 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # TODO this model can be improved a lot once we have MapKey content # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CSimpleStringT", True, "CSimpleStringT", "(const XCHAR *,int,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CSimpleStringT", True, "CSimpleStringT", "(PCXSTR,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CSimpleStringT", True, "CSimpleStringT", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CSimpleStringT", True, "Append", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "AppendChar", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "CopyChars", "(XCHAR *,const XCHAR *,int)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] - - ["", "CSimpleStringT", True, "CopyChars", "(XCHAR *,size_t,const XCHAR *,int)", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] - - ["", "CSimpleStringT", True, "CopyCharsOverlapped", "(XCHAR *,const XCHAR *,int)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] - - ["", "CSimpleStringT", True, "GetString", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CSimpleStringT", True, "LockBuffer", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CSimpleStringT", True, "SetAt", "", "", "Argument[1]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "SetString", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CSimpleStringT", True, "operator PCXSTR", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CSimpleStringT", True, "operator[]", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(PCXSTR)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(PCXSTR)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(PCXSTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(const CStaticString &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(const CStaticString &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(const CStaticString &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(char)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(char)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(unsigned char)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(unsigned char)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(unsigned char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(wchar_t)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(wchar_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator+=", "(wchar_t)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CSimpleStringT", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CSimpleStringT", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] - - ["", "CSimpleStringT", True, "GetAt", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CSimpleStringT", True, "GetBuffer", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CSimpleStringT", True, "GetBufferSetLength", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] \ No newline at end of file + - ["ATL", "CSimpleStringT", True, "CSimpleStringT", "(const XCHAR *,int,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "CSimpleStringT", "(PCXSTR,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "CSimpleStringT", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "Append", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "AppendChar", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "CopyChars", "(XCHAR *,const XCHAR *,int)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "CopyChars", "(XCHAR *,size_t,const XCHAR *,int)", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "CopyCharsOverlapped", "(XCHAR *,const XCHAR *,int)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "GetString", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "LockBuffer", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "SetAt", "", "", "Argument[1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "SetString", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "operator PCXSTR", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "operator[]", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(PCXSTR)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(PCXSTR)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(PCXSTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(const CStaticString &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(const CStaticString &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(const CStaticString &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(char)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(char)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(unsigned char)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(unsigned char)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(unsigned char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(wchar_t)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(wchar_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator+=", "(wchar_t)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "GetAt", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CSimpleStringT", True, "GetBuffer", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CSimpleStringT", True, "GetBufferSetLength", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/CStrBufT.model.yml b/cpp/ql/lib/ext/CStrBufT.model.yml index a8abace32e6..9c915e6c307 100644 --- a/cpp/ql/lib/ext/CStrBufT.model.yml +++ b/cpp/ql/lib/ext/CStrBufT.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: - - ["", "CStrBufT", True, "CStrBufT", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStrBufT", True, "operator PCXSTR", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CStrBufT", True, "operator PXSTR", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStrBufT", True, "CStrBufT", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStrBufT", True, "operator PCXSTR", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStrBufT", True, "operator PXSTR", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] diff --git a/cpp/ql/lib/ext/CStringData.model.yml b/cpp/ql/lib/ext/CStringData.model.yml index 6cf0d610cb7..d5044135fb8 100644 --- a/cpp/ql/lib/ext/CStringData.model.yml +++ b/cpp/ql/lib/ext/CStringData.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: - - ["", "CStringData", True, "data", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringData", True, "data", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] diff --git a/cpp/ql/lib/ext/CStringT.model.yml b/cpp/ql/lib/ext/CStringT.model.yml index 0a8b89e03fb..c416a41226f 100644 --- a/cpp/ql/lib/ext/CStringT.model.yml +++ b/cpp/ql/lib/ext/CStringT.model.yml @@ -3,116 +3,116 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # TODO this model can be improved a lot once we have MapKey content # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CStringT", True, "CStringT", "(const VARIANT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const VARIANT &,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const CStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const XCHAR *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const YCHAR *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(LPCSTR,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(LPCWSTR,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const unsigned char *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(char *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(unsigned char *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(wchar_t *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const unsigned char *,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(char,int)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "CStringT", "(wchar_t,int)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "CStringT", "(const XCHAR *,int)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const YCHAR *,int)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const XCHAR *,int,AtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "CStringT", "(const YCHAR *,int,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "AllocSysString", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] - - ["", "CStringT", True, "AppendFormat", "(PCXSTR,...)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "AppendFormat", "(PCXSTR,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "AppendFormat", "(PCXSTR,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "AppendFormat", "(UINT,...)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "AppendFormat", "(UINT,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "AppendFormat", "(UINT,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Format", "(PCXSTR,...)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Format", "(PCXSTR,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Format", "(PCXSTR,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Format", "(UINT,...)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Format", "(UINT,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Format", "(UINT,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatMessage", "(PCXSTR,...)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatMessage", "(PCXSTR,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatMessage", "(PCXSTR,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatMessage", "(UINT,...)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatMessage", "(UINT,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatMessage", "(UINT,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatMessageV", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatMessageV", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatV", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "FormatV", "", "", "Argument[1]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Insert", "(int,PCXSTR)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Insert", "(int,XCHAR)", "", "Argument[1]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Left", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CStringT", True, "Right", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CStringT", True, "LoadString", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "LoadString", "", "", "Argument[1]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "MakeLower", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CStringT", True, "MakeReverse", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CStringT", True, "MakeUpper", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CStringT", True, "Mid", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CStringT", True, "Replace", "(PCXSTR,PCXSTR)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "Replace", "(XCHAR,XCHAR)", "", "Argument[1]", "Argument[-1]", "taint", "manual"] - - ["", "CStringT", True, "SetSysString", "", "", "Argument[-1]", "ReturnValue", "value", "manual"] - - ["", "CStringT", True, "SetSysString", "", "", "Argument[-1]", "Argument[**0]", "value", "manual"] - - ["", "CStringT", True, "SpanExcluding", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CStringT", True, "SpanIncluding", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CStringT", True, "Tokenize", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - - ["", "CStringT", True, "Trim", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CStringT", True, "TrimLeft", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CStringT", True, "TrimRight", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CStringT", True, "operator=", "(const CStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(const CStringT &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(const CSimpleStringT &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(PCXSTR)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(PCXSTR)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(PCYSTR)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(PCYSTR)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(const unsigned char *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(XCHAR)", "", "Argument[0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(XCHAR)", "", "Argument[0]", "ReturnValue[*]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(YCHAR)", "", "Argument[0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(YCHAR)", "", "Argument[0]", "ReturnValue[*]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(const VARIANT &)", "", "Argument[0]", "Argument[-1]", "value", "manual"] - - ["", "CStringT", True, "operator=", "(const VARIANT &)", "", "Argument[0]", "ReturnValue[*]", "value", "manual"] - - ["", "", True, "operator+", "(const CStringT &,const CStringT &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(const CStringT &,PCXSTR)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(PCXSTR,const CStringT &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(char,const CStringT &)", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(char,const CStringT &)", "", "Argument[*1]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(const CStringT &,char)", "", "Argument[*0]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(const CStringT &,char)", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(const CStringT &,wchar_t)", "", "Argument[*0]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(const CStringT &,wchar_t)", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(wchar_t, const CStringT &)", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+", "(wchar_t,const CStringT &)", "", "Argument[*1]", "ReturnValue", "taint", "manual"] - - ["", "", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(const CStaticString &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(const CStaticString &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "", True, "operator+=", "(const CStaticString &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(PCXSTR)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(PCXSTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "", True, "operator+=", "(PCXSTR)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(PCYSTR)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(PCYSTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "", True, "operator+=", "(PCYSTR)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(char)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "", True, "operator+=", "(char)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(unsigned char)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(unsigned char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "", True, "operator+=", "(unsigned char)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(wchar_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(wchar_t)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "", True, "operator+=", "(wchar_t)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(const VARIANT &)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] - - ["", "", True, "operator+=", "(const VARIANT &)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - - ["", "", True, "operator+=", "(const VARIANT &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] \ No newline at end of file + - ["ATL", "CStringT", True, "CStringT", "(const VARIANT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const VARIANT &,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const CStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const XCHAR *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const YCHAR *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(LPCSTR,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(LPCWSTR,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const unsigned char *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(char *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(unsigned char *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(wchar_t *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const unsigned char *,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(char,int)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(wchar_t,int)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const XCHAR *,int)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const YCHAR *,int)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const XCHAR *,int,AtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "CStringT", "(const YCHAR *,int,IAtlStringMgr *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "AllocSysString", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringT", True, "AppendFormat", "(PCXSTR,...)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "AppendFormat", "(PCXSTR,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "AppendFormat", "(PCXSTR,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "AppendFormat", "(UINT,...)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "AppendFormat", "(UINT,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "AppendFormat", "(UINT,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Format", "(PCXSTR,...)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Format", "(PCXSTR,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Format", "(PCXSTR,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Format", "(UINT,...)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Format", "(UINT,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Format", "(UINT,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatMessage", "(PCXSTR,...)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatMessage", "(PCXSTR,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatMessage", "(PCXSTR,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatMessage", "(UINT,...)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatMessage", "(UINT,...)", "", "Argument[1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatMessage", "(UINT,...)", "", "Argument[*1..8]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatMessageV", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatMessageV", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatV", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "FormatV", "", "", "Argument[1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Insert", "(int,PCXSTR)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Insert", "(int,XCHAR)", "", "Argument[1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Left", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CStringT", True, "Right", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CStringT", True, "LoadString", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "LoadString", "", "", "Argument[1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "MakeLower", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CStringT", True, "MakeReverse", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CStringT", True, "MakeUpper", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CStringT", True, "Mid", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CStringT", True, "Replace", "(PCXSTR,PCXSTR)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "Replace", "(XCHAR,XCHAR)", "", "Argument[1]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CStringT", True, "SetSysString", "", "", "Argument[-1]", "ReturnValue", "value", "manual"] + - ["ATL", "CStringT", True, "SetSysString", "", "", "Argument[-1]", "Argument[**0]", "value", "manual"] + - ["ATL", "CStringT", True, "SpanExcluding", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CStringT", True, "SpanIncluding", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CStringT", True, "Tokenize", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["ATL", "CStringT", True, "Trim", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CStringT", True, "TrimLeft", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CStringT", True, "TrimRight", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CStringT", True, "operator=", "(const CStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(const CStringT &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(const CSimpleStringT &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(PCXSTR)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(PCXSTR)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(PCYSTR)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(PCYSTR)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(const unsigned char *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(XCHAR)", "", "Argument[0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(XCHAR)", "", "Argument[0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(YCHAR)", "", "Argument[0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(YCHAR)", "", "Argument[0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(const VARIANT &)", "", "Argument[0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CStringT", True, "operator=", "(const VARIANT &)", "", "Argument[0]", "ReturnValue[*]", "value", "manual"] + - ["ATL", "", True, "operator+", "(const CStringT &,const CStringT &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(const CStringT &,PCXSTR)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(PCXSTR,const CStringT &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(char,const CStringT &)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(char,const CStringT &)", "", "Argument[*1]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(const CStringT &,char)", "", "Argument[*0]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(const CStringT &,char)", "", "Argument[1]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(const CStringT &,wchar_t)", "", "Argument[*0]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(const CStringT &,wchar_t)", "", "Argument[1]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(wchar_t, const CStringT &)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+", "(wchar_t,const CStringT &)", "", "Argument[*1]", "ReturnValue", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const CSimpleStringT &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const CStaticString &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const CStaticString &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const CStaticString &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(PCXSTR)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(PCXSTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(PCXSTR)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(PCYSTR)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(PCYSTR)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(PCYSTR)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(char)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(char)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(unsigned char)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(unsigned char)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(unsigned char)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(wchar_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(wchar_t)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(wchar_t)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const VARIANT &)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const VARIANT &)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "", True, "operator+=", "(const VARIANT &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/CUrl.model.yml b/cpp/ql/lib/ext/CUrl.model.yml index db51b205d4b..4f71f64a5a6 100644 --- a/cpp/ql/lib/ext/CUrl.model.yml +++ b/cpp/ql/lib/ext/CUrl.model.yml @@ -3,20 +3,20 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # TODO this model can be improved a lot once we have MapKey content # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "CUrl", True, "CUrl", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CUrl", True, "CrackUrl", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CUrl", True, "CreateUrl", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - - ["", "CUrl", True, "GetExtraInfo", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CUrl", True, "GetHostName", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CUrl", True, "GetPassword", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CUrl", True, "GetSchemeName", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CUrl", True, "GetUrlPath", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CUrl", True, "GetUserName", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - - ["", "CUrl", True, "SetExtraInfo", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CUrl", True, "SetHostName", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CUrl", True, "SetPassword", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CUrl", True, "SetSchemeName", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CUrl", True, "SetUrlPath", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CUrl", True, "SetUserName", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["", "CUrl", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] - - ["", "CUrl", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] \ No newline at end of file + - ["ATL", "CUrl", True, "CUrl", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CUrl", True, "CrackUrl", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CUrl", True, "CreateUrl", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["ATL", "CUrl", True, "GetExtraInfo", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CUrl", True, "GetHostName", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CUrl", True, "GetPassword", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CUrl", True, "GetSchemeName", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CUrl", True, "GetUrlPath", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CUrl", True, "GetUserName", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["ATL", "CUrl", True, "SetExtraInfo", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CUrl", True, "SetHostName", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CUrl", True, "SetPassword", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CUrl", True, "SetSchemeName", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CUrl", True, "SetUrlPath", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CUrl", True, "SetUserName", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["ATL", "CUrl", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["ATL", "CUrl", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/CA2AEX.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/CA2AEX.qll index 595b6e3bb3e..e1f77c95757 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/CA2AEX.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/CA2AEX.qll @@ -6,7 +6,7 @@ private import semmle.code.cpp.dataflow.new.DataFlow * The `CA2AEX` (and related) classes from the Windows Active Template library. */ class Ca2Aex extends Class { - Ca2Aex() { this.hasGlobalName(["CA2AEX", "CA2CAEX", "CA2WEX"]) } + Ca2Aex() { this.hasQualifiedName("ATL", ["CA2AEX", "CA2CAEX", "CA2WEX"]) } } private class Ca2AexTaintInheritingContent extends TaintInheritingContent, DataFlow::FieldContent { diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlFile.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlFile.qll index 6c01a29c539..bfb46a1d946 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlFile.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlFile.qll @@ -4,7 +4,7 @@ import semmle.code.cpp.models.interfaces.FlowSource * The `CAtlFile` class from Microsoft's Active Template Library. */ class CAtlFile extends Class { - CAtlFile() { this.hasGlobalName("CAtlFile") } + CAtlFile() { this.hasQualifiedName("ATL", "CAtlFile") } } private class CAtlFileRead extends MemberFunction, LocalFlowSourceFunction { diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlFileMapping.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlFileMapping.qll index 85dae06806f..be0cf4c1be7 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlFileMapping.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlFileMapping.qll @@ -4,14 +4,14 @@ import semmle.code.cpp.models.interfaces.FlowSource * The `CAtlFileMapping` class from Microsoft's Active Template Library. */ class CAtlFileMapping extends Class { - CAtlFileMapping() { this.hasGlobalName("CAtlFileMapping") } + CAtlFileMapping() { this.hasQualifiedName("ATL", "CAtlFileMapping") } } /** * The `CAtlFileMappingBase` class from Microsoft's Active Template Library. */ class CAtlFileMappingBase extends Class { - CAtlFileMappingBase() { this.hasGlobalName("CAtlFileMappingBase") } + CAtlFileMappingBase() { this.hasQualifiedName("ATL", "CAtlFileMappingBase") } } private class CAtlFileMappingBaseGetData extends MemberFunction, LocalFlowSourceFunction { diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlTemporaryFile.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlTemporaryFile.qll index cc3a36d0fbd..631223acb66 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlTemporaryFile.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/CAtlTemporaryFile.qll @@ -4,7 +4,7 @@ import semmle.code.cpp.models.interfaces.FlowSource * The `CAtlFile` class from Microsoft's Active Template Library. */ class CAtlTemporaryFile extends Class { - CAtlTemporaryFile() { this.hasGlobalName("CAtlTemporaryFile") } + CAtlTemporaryFile() { this.hasQualifiedName("ATL", "CAtlTemporaryFile") } } private class CAtlTemporaryFileRead extends MemberFunction, LocalFlowSourceFunction { diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/CComBSTR.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/CComBSTR.qll index 55d18a52ae4..3580886c4d5 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/CComBSTR.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/CComBSTR.qll @@ -4,7 +4,7 @@ private import semmle.code.cpp.dataflow.new.DataFlow /** The `CComBSTR` class from the Microsoft "Active Template Library". */ class CcomBstr extends Class { - CcomBstr() { this.hasGlobalName("CComBSTR") } + CcomBstr() { this.hasQualifiedName("ATL", "CComBSTR") } } private class Mstr extends Field { diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/CPathT.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/CPathT.qll index b2fe3a363c7..83be2d83312 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/CPathT.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/CPathT.qll @@ -4,7 +4,7 @@ private import semmle.code.cpp.dataflow.new.DataFlow /** The `CPathT` class from the Microsoft "Active Template Library". */ class CPathT extends Class { - CPathT() { this.hasGlobalName("CPathT") } + CPathT() { this.hasQualifiedName("ATL", "CPathT") } } private class MStrPath extends Field { diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/CRegKey.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/CRegKey.qll index e6d1a5ba09e..db40acb2276 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/CRegKey.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/CRegKey.qll @@ -5,7 +5,7 @@ private import semmle.code.cpp.dataflow.new.DataFlow /** The `CRegKey` class from the Microsoft "Active Template Library". */ class CRegKey extends Class { - CRegKey() { this.hasGlobalName("CRegKey") } + CRegKey() { this.hasQualifiedName("ATL", "CRegKey") } } module CRegKey { From 636150ea4f460b3bcc9350031eca02659946d7aa Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 14 Mar 2025 18:43:33 +0000 Subject: [PATCH 2/4] C++: Adjust tests and accept test changes. --- .../dataflow/taint-tests/atl.cpp | 2282 +++++++++-------- .../dataflow/taint-tests/localTaint.expected | 2276 ++++++++-------- .../taint-tests/test_mad-signatures.expected | 1152 ++++----- 3 files changed, 2856 insertions(+), 2854 deletions(-) diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/atl.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/atl.cpp index 167ba84301f..e26416a0e68 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/atl.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/atl.cpp @@ -30,1213 +30,1215 @@ struct __POSITION { int unused; }; typedef __POSITION* POSITION; typedef WORD ATL_URL_PORT; -enum ATL_URL_SCHEME{ - ATL_URL_SCHEME_UNKNOWN = -1, - ATL_URL_SCHEME_FTP = 0, - ATL_URL_SCHEME_GOPHER = 1, - ATL_URL_SCHEME_HTTP = 2, - ATL_URL_SCHEME_HTTPS = 3, - ATL_URL_SCHEME_FILE = 4, - ATL_URL_SCHEME_NEWS = 5, - ATL_URL_SCHEME_MAILTO = 6, - ATL_URL_SCHEME_SOCKS = 7 -}; - using HINSTANCE = void*; using size_t = decltype(sizeof(int)); using SIZE_T = size_t; #define NULL nullptr -typedef struct tagSAFEARRAYBOUND { - ULONG cElements; - LONG lLbound; -} SAFEARRAYBOUND, *LPSAFEARRAYBOUND; +namespace ATL { + enum ATL_URL_SCHEME{ + ATL_URL_SCHEME_UNKNOWN = -1, + ATL_URL_SCHEME_FTP = 0, + ATL_URL_SCHEME_GOPHER = 1, + ATL_URL_SCHEME_HTTP = 2, + ATL_URL_SCHEME_HTTPS = 3, + ATL_URL_SCHEME_FILE = 4, + ATL_URL_SCHEME_NEWS = 5, + ATL_URL_SCHEME_MAILTO = 6, + ATL_URL_SCHEME_SOCKS = 7 + }; -typedef struct tagVARIANT { - /* ... */ -} VARIANT; + typedef struct tagSAFEARRAYBOUND { + ULONG cElements; + LONG lLbound; + } SAFEARRAYBOUND, *LPSAFEARRAYBOUND; -typedef struct tagSAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - PVOID pvData; - SAFEARRAYBOUND rgsabound[1]; -} SAFEARRAY, *LPSAFEARRAY; + typedef struct tagVARIANT { + /* ... */ + } VARIANT; -struct _U_STRINGorID { - _U_STRINGorID(UINT nID); - _U_STRINGorID(LPCTSTR lpString); + typedef struct tagSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + PVOID pvData; + SAFEARRAYBOUND rgsabound[1]; + } SAFEARRAY, *LPSAFEARRAY; - LPCTSTR m_lpstr; -}; + struct _U_STRINGorID { + _U_STRINGorID(UINT nID); + _U_STRINGorID(LPCTSTR lpString); -void test__U_STRINGorID() { - { - UINT x = source(); - _U_STRINGorID u(x); - sink(u.m_lpstr); // $ ir - } - - { - LPCTSTR y = indirect_source(); - _U_STRINGorID u(y); - sink(u.m_lpstr); // $ ir - } -} - -template -struct CA2AEX { - LPSTR m_psz; - char m_szBuffer[t_nBufferLength]; - - CA2AEX(LPCSTR psz, UINT nCodePage); - CA2AEX(LPCSTR psz); - - ~CA2AEX(); - - operator LPSTR() const throw(); -}; - -void test_CA2AEX() { - { - LPSTR x = indirect_source(); - CA2AEX<128> a(x); - sink(static_cast(a)); // $ ir - sink(a.m_psz); // $ ir - sink(a.m_szBuffer); // $ ir - } - - { - LPSTR x = indirect_source(); - CA2AEX<128> a(x, 0); - sink(static_cast(a)); // $ ir - sink(a.m_psz); // $ ir - sink(a.m_szBuffer); // $ ir - } -} - -template -struct CA2CAEX { - CA2CAEX(LPCSTR psz, UINT nCodePage) ; - CA2CAEX(LPCSTR psz) ; - ~CA2CAEX() throw(); - operator LPCSTR() const throw(); - LPCSTR m_psz; -}; - -void test_CA2CAEX() { - LPCSTR x = indirect_source(); - { - CA2CAEX<128> a(x); - sink(static_cast(a)); // $ ir - sink(a.m_psz); // $ ir - sink(a.m_psz); // $ ir - } - { - CA2CAEX<128> a(x, 0); - sink(static_cast(a)); // $ ir - sink(a.m_psz); // $ ir - sink(a.m_psz); // $ ir - } -} - -template -struct CA2WEX { - CA2WEX(LPCSTR psz, UINT nCodePage) ; - CA2WEX(LPCSTR psz) ; - ~CA2WEX() throw(); - operator LPWSTR() const throw(); - LPWSTR m_psz; - wchar_t m_szBuffer[t_nBufferLength]; -}; - -void test_CA2WEX() { - LPCSTR x = indirect_source(); - { - CA2WEX<128> a(x); - sink(static_cast(a)); // $ ir - sink(a.m_psz); // $ ir - sink(a.m_psz); // $ ir - } - { - CA2WEX<128> a(x, 0); - sink(static_cast(a)); // $ ir - sink(a.m_psz); // $ ir - sink(a.m_psz); // $ ir - } -} - -template -struct CElementTraitsBase { - typedef const T& INARGTYPE; - typedef T& OUTARGTYPE; - - static void CopyElements(T* pDest, const T* pSrc, size_t nElements); - static void RelocateElements(T* pDest, T* pSrc, size_t nElements); -}; - -template -struct CDefaultElementTraits : public CElementTraitsBase {}; - -template -struct CElementTraits : public CDefaultElementTraits {}; - -template> -struct CAtlArray { - using INARGTYPE = typename ETraits::INARGTYPE; - using OUTARGTYPE = typename ETraits::OUTARGTYPE; - - CAtlArray() throw(); - ~CAtlArray() throw(); - - size_t Add(INARGTYPE element); - size_t Add(); - size_t Append(const CAtlArray& aSrc); - void Copy(const CAtlArray& aSrc); - const E& GetAt(size_t iElement) const throw(); - E& GetAt(size_t iElement) throw(); - size_t GetCount() const throw(); - E* GetData() throw(); - const E* GetData() const throw(); - void InsertArrayAt(size_t iStart, const CAtlArray* paNew); - void InsertAt(size_t iElement, INARGTYPE element, size_t nCount); - bool IsEmpty() const throw(); - void RemoveAll() throw(); - void RemoveAt(size_t iElement, size_t nCount); - void SetAt(size_t iElement, INARGTYPE element); - void SetAtGrow(size_t iElement, INARGTYPE element); - bool SetCount(size_t nNewSize, int nGrowBy); - E& operator[](size_t ielement) throw(); - const E& operator[](size_t ielement) const throw(); -}; - -void test_CAtlArray() { - int x = source(); - - { - CAtlArray a; - a.Add(x); - sink(a[0]); // $ ir - a.Add(0); - sink(a[0]); // $ ir - - CAtlArray a2; - sink(a2[0]); - a2.Append(a); - sink(a2[0]); // $ ir - - CAtlArray a3; - sink(a3[0]); - a3.Copy(a2); - sink(a3[0]); // $ ir - - sink(a3.GetAt(0)); // $ ir - sink(*a3.GetData()); // $ ir - - CAtlArray a4; - sink(a4.GetAt(0)); - a4.InsertArrayAt(0, &a3); - sink(a4.GetAt(0)); // $ ir - } - { - CAtlArray a5; - a5.InsertAt(0, source(), 1); - sink(a5[0]); // $ ir - - CAtlArray a6; - a6.SetAtGrow(0, source()); - sink(a6[0]); // $ ir - } -} - -template> -struct CAtlList { - using INARGTYPE = typename ETraits::INARGTYPE; - CAtlList(UINT nBlockSize) throw(); - ~CAtlList() throw(); - POSITION AddHead(); - POSITION AddHead(INARGTYPE element); - void AddHeadList(const CAtlList* plNew); - POSITION AddTail(); - POSITION AddTail(INARGTYPE element); - void AddTailList(const CAtlList* plNew); - POSITION Find(INARGTYPE element, POSITION posStartAfter) const throw(); - POSITION FindIndex(size_t iElement) const throw(); - E& GetAt(POSITION pos) throw(); - const E& GetAt(POSITION pos) const throw(); - size_t GetCount() const throw(); - E& GetHead() throw(); - const E& GetHead() const throw(); - POSITION GetHeadPosition() const throw(); - E& GetNext(POSITION& pos) throw(); - const E& GetNext(POSITION& pos) const throw(); - E& GetPrev(POSITION& pos) throw(); - const E& GetPrev(POSITION& pos) const throw(); - E& GetTail() throw(); - const E& GetTail() const throw(); - POSITION GetTailPosition() const throw(); - POSITION InsertAfter(POSITION pos, INARGTYPE element); - POSITION InsertBefore(POSITION pos, INARGTYPE element); - bool IsEmpty() const throw(); - void MoveToHead(POSITION pos) throw(); - void MoveToTail(POSITION pos) throw(); - void RemoveAll() throw(); - void RemoveAt(POSITION pos) throw(); - E RemoveHead(); - void RemoveHeadNoReturn() throw(); - E RemoveTail(); - void RemoveTailNoReturn() throw(); - void SetAt(POSITION pos, INARGTYPE element); - void SwapElements(POSITION pos1, POSITION pos2) throw(); -}; - -void test_CAtlList() { - int x = source(); - { - CAtlList list(10); - sink(list.GetHead()); - list.AddHead(x); - sink(list.GetHead()); // $ ir - - CAtlList list2(10); - list2.AddHeadList(&list); - sink(list2.GetHead()); // $ ir - - CAtlList list3(10); - list3.AddTail(x); - sink(list3.GetHead()); // $ ir - - CAtlList list4(10); - list4.AddTailList(&list3); - sink(list4.GetHead()); // $ ir + LPCTSTR m_lpstr; + }; + void test__U_STRINGorID() { { - CAtlList list5(10); - auto pos = list5.Find(x, list5.GetHeadPosition()); - sink(list5.GetAt(pos)); // $ MISSING: ir + UINT x = source(); + _U_STRINGorID u(x); + sink(u.m_lpstr); // $ ir } { - CAtlList list6(10); - list6.AddHead(x); - auto pos = list6.FindIndex(0); - sink(list6.GetAt(pos)); // $ ir - } - - { - CAtlList list7(10); - auto pos = list7.GetTailPosition(); - list7.InsertAfter(pos, x); - sink(list7.GetHead()); // $ ir - } - - { - CAtlList list8(10); - auto pos = list8.GetTailPosition(); - list8.InsertBefore(pos, x); - sink(list8.GetHead()); // $ ir - } - { - CAtlList list9(10); - list9.SetAt(list9.GetHeadPosition(), x); - sink(list9.GetHead()); // $ ir + LPCTSTR y = indirect_source(); + _U_STRINGorID u(y); + sink(u.m_lpstr); // $ ir } } - int* p = indirect_source(); - { - CAtlList list(10); - sink(list.GetHead()); - list.AddHead(p); - sink(list.GetHead()); // $ ir + template + struct CA2AEX { + LPSTR m_psz; + char m_szBuffer[t_nBufferLength]; - CAtlList list2(10); - list2.AddHeadList(&list); - sink(list2.GetHead()); // $ ir + CA2AEX(LPCSTR psz, UINT nCodePage); + CA2AEX(LPCSTR psz); - CAtlList list3(10); - list3.AddTail(p); - sink(list3.GetHead()); // $ ir + ~CA2AEX(); - CAtlList list4(10); - list4.AddTailList(&list3); - sink(list4.GetHead()); // $ ir + operator LPSTR() const throw(); + }; + void test_CA2AEX() { { - CAtlList list5(10); - auto pos = list5.Find(p, list5.GetHeadPosition()); - sink(list5.GetAt(pos)); // $ MISSING: ir + LPSTR x = indirect_source(); + CA2AEX<128> a(x); + sink(static_cast(a)); // $ ir + sink(a.m_psz); // $ ir + sink(a.m_szBuffer); // $ ir } { - CAtlList list6(10); - list6.AddHead(p); - auto pos = list6.FindIndex(0); - sink(list6.GetAt(pos)); // $ ir - } - - { - CAtlList list7(10); - auto pos = list7.GetTailPosition(); - list7.InsertAfter(pos, p); - sink(list7.GetHead()); // $ ir - } - - { - CAtlList list8(10); - auto pos = list8.GetTailPosition(); - list8.InsertBefore(pos, p); - sink(list8.GetHead()); // $ ir - } - { - CAtlList list9(10); - list9.SetAt(list9.GetHeadPosition(), p); - sink(list9.GetHead()); // $ ir + LPSTR x = indirect_source(); + CA2AEX<128> a(x, 0); + sink(static_cast(a)); // $ ir + sink(a.m_psz); // $ ir + sink(a.m_szBuffer); // $ ir } } -} -struct IUnknown { }; + template + struct CA2CAEX { + CA2CAEX(LPCSTR psz, UINT nCodePage) ; + CA2CAEX(LPCSTR psz) ; + ~CA2CAEX() throw(); + operator LPCSTR() const throw(); + LPCSTR m_psz; + }; -struct ISequentialStream : public IUnknown { }; - -struct IStream : public ISequentialStream { }; - -struct CComBSTR { - CComBSTR() throw(); - CComBSTR(const CComBSTR& src); - CComBSTR(int nSize); - CComBSTR(int nSize, LPCOLESTR sz); - CComBSTR(int nSize, LPCSTR sz); - CComBSTR(LPCOLESTR pSrc); - CComBSTR(LPCSTR pSrc); - CComBSTR(CComBSTR&& src) throw(); - ~CComBSTR(); - - HRESULT Append(const CComBSTR& bstrSrc) throw(); - HRESULT Append(wchar_t ch) throw(); - HRESULT Append(char ch) throw(); - HRESULT Append(LPCOLESTR lpsz) throw(); - HRESULT Append(LPCSTR lpsz) throw(); - HRESULT Append(LPCOLESTR lpsz, int nLen) throw(); - HRESULT AppendBSTR(BSTR p) throw(); - HRESULT AppendBytes(const char* lpsz, int nLen) throw(); - HRESULT ArrayToBSTR(const SAFEARRAY* pSrc) throw(); - HRESULT AssignBSTR(const BSTR bstrSrc) throw(); - void Attach(BSTR src) throw(); - HRESULT BSTRToArray(LPSAFEARRAY* ppArray) throw(); - unsigned int ByteLength() const throw(); - BSTR Copy() const throw(); - HRESULT CopyTo(BSTR* pbstr) throw(); - - HRESULT CopyTo(VARIANT* pvarDest) throw(); - BSTR Detach() throw(); - void Empty() throw(); - unsigned int Length() const throw(); - bool LoadString(HINSTANCE hInst, UINT nID) throw(); - bool LoadString(UINT nID) throw(); - HRESULT ReadFromStream(IStream* pStream) throw(); - HRESULT ToUpper() throw(); - HRESULT WriteToStream(IStream* pStream) throw(); - - operator BSTR() const throw(); - BSTR* operator&() throw(); - - CComBSTR& operator+= (const CComBSTR& bstrSrc); - CComBSTR& operator+= (const LPCOLESTR pszSrc); - - BSTR m_str; -}; - -LPSAFEARRAY getSafeArray() { - SAFEARRAY* safe = new SAFEARRAY; - safe->pvData = indirect_source(); - return safe; -} - -void test_CComBSTR() { - char* x = indirect_source(); - { - CComBSTR b(x); - sink(b.m_str); // $ ir - - CComBSTR b2(b); - sink(b2.m_str); // $ ir + void test_CA2CAEX() { + LPCSTR x = indirect_source(); + { + CA2CAEX<128> a(x); + sink(static_cast(a)); // $ ir + sink(a.m_psz); // $ ir + sink(a.m_psz); // $ ir + } + { + CA2CAEX<128> a(x, 0); + sink(static_cast(a)); // $ ir + sink(a.m_psz); // $ ir + sink(a.m_psz); // $ ir + } } - { - CComBSTR b(10, x); - sink(b.m_str); // $ ir + + template + struct CA2WEX { + CA2WEX(LPCSTR psz, UINT nCodePage) ; + CA2WEX(LPCSTR psz) ; + ~CA2WEX() throw(); + operator LPWSTR() const throw(); + LPWSTR m_psz; + wchar_t m_szBuffer[t_nBufferLength]; + }; + + void test_CA2WEX() { + LPCSTR x = indirect_source(); + { + CA2WEX<128> a(x); + sink(static_cast(a)); // $ ir + sink(a.m_psz); // $ ir + sink(a.m_psz); // $ ir + } + { + CA2WEX<128> a(x, 0); + sink(static_cast(a)); // $ ir + sink(a.m_psz); // $ ir + sink(a.m_psz); // $ ir + } } - { - CComBSTR b(x); - CComBSTR b2; - sink(b2.m_str); - b2 += b; - sink(b2.m_str); // $ ir + template + struct CElementTraitsBase { + typedef const T& INARGTYPE; + typedef T& OUTARGTYPE; - CComBSTR b3; - b3 += x; - sink(b3.m_str); // $ ir - sink(static_cast(b3)); // $ ir - sink(**&b3); // $ ir + static void CopyElements(T* pDest, const T* pSrc, size_t nElements); + static void RelocateElements(T* pDest, T* pSrc, size_t nElements); + }; - CComBSTR b4; - b4.Append(source()); - sink(b4.m_str); // $ ir + template + struct CDefaultElementTraits : public CElementTraitsBase {}; - CComBSTR b5; - b5.AppendBSTR(b4.m_str); - sink(b5.m_str); // $ ir + template + struct CElementTraits : public CDefaultElementTraits {}; - CComBSTR b6; - b6.AppendBytes(x, 10); - sink(b6.m_str); // $ ir + template> + struct CAtlArray { + using INARGTYPE = typename ETraits::INARGTYPE; + using OUTARGTYPE = typename ETraits::OUTARGTYPE; - CComBSTR b7; - b7.ArrayToBSTR(getSafeArray()); - sink(b7.m_str); // $ ir + CAtlArray() throw(); + ~CAtlArray() throw(); - CComBSTR b8; - b8.AssignBSTR(b7.m_str); - sink(b8.m_str); // $ ir + size_t Add(INARGTYPE element); + size_t Add(); + size_t Append(const CAtlArray& aSrc); + void Copy(const CAtlArray& aSrc); + const E& GetAt(size_t iElement) const throw(); + E& GetAt(size_t iElement) throw(); + size_t GetCount() const throw(); + E* GetData() throw(); + const E* GetData() const throw(); + void InsertArrayAt(size_t iStart, const CAtlArray* paNew); + void InsertAt(size_t iElement, INARGTYPE element, size_t nCount); + bool IsEmpty() const throw(); + void RemoveAll() throw(); + void RemoveAt(size_t iElement, size_t nCount); + void SetAt(size_t iElement, INARGTYPE element); + void SetAtGrow(size_t iElement, INARGTYPE element); + bool SetCount(size_t nNewSize, int nGrowBy); + E& operator[](size_t ielement) throw(); + const E& operator[](size_t ielement) const throw(); + }; - CComBSTR b9; - LPSAFEARRAY safe; - b9.Append(source()); - b9.BSTRToArray(&safe); + void test_CAtlArray() { + int x = source(); + + { + CAtlArray a; + a.Add(x); + sink(a[0]); // $ ir + a.Add(0); + sink(a[0]); // $ ir + + CAtlArray a2; + sink(a2[0]); + a2.Append(a); + sink(a2[0]); // $ ir + + CAtlArray a3; + sink(a3[0]); + a3.Copy(a2); + sink(a3[0]); // $ ir + + sink(a3.GetAt(0)); // $ ir + sink(*a3.GetData()); // $ ir + + CAtlArray a4; + sink(a4.GetAt(0)); + a4.InsertArrayAt(0, &a3); + sink(a4.GetAt(0)); // $ ir + } + { + CAtlArray a5; + a5.InsertAt(0, source(), 1); + sink(a5[0]); // $ ir + + CAtlArray a6; + a6.SetAtGrow(0, source()); + sink(a6[0]); // $ ir + } + } + + template> + struct CAtlList { + using INARGTYPE = typename ETraits::INARGTYPE; + CAtlList(UINT nBlockSize) throw(); + ~CAtlList() throw(); + POSITION AddHead(); + POSITION AddHead(INARGTYPE element); + void AddHeadList(const CAtlList* plNew); + POSITION AddTail(); + POSITION AddTail(INARGTYPE element); + void AddTailList(const CAtlList* plNew); + POSITION Find(INARGTYPE element, POSITION posStartAfter) const throw(); + POSITION FindIndex(size_t iElement) const throw(); + E& GetAt(POSITION pos) throw(); + const E& GetAt(POSITION pos) const throw(); + size_t GetCount() const throw(); + E& GetHead() throw(); + const E& GetHead() const throw(); + POSITION GetHeadPosition() const throw(); + E& GetNext(POSITION& pos) throw(); + const E& GetNext(POSITION& pos) const throw(); + E& GetPrev(POSITION& pos) throw(); + const E& GetPrev(POSITION& pos) const throw(); + E& GetTail() throw(); + const E& GetTail() const throw(); + POSITION GetTailPosition() const throw(); + POSITION InsertAfter(POSITION pos, INARGTYPE element); + POSITION InsertBefore(POSITION pos, INARGTYPE element); + bool IsEmpty() const throw(); + void MoveToHead(POSITION pos) throw(); + void MoveToTail(POSITION pos) throw(); + void RemoveAll() throw(); + void RemoveAt(POSITION pos) throw(); + E RemoveHead(); + void RemoveHeadNoReturn() throw(); + E RemoveTail(); + void RemoveTailNoReturn() throw(); + void SetAt(POSITION pos, INARGTYPE element); + void SwapElements(POSITION pos1, POSITION pos2) throw(); + }; + + void test_CAtlList() { + int x = source(); + { + CAtlList list(10); + sink(list.GetHead()); + list.AddHead(x); + sink(list.GetHead()); // $ ir + + CAtlList list2(10); + list2.AddHeadList(&list); + sink(list2.GetHead()); // $ ir + + CAtlList list3(10); + list3.AddTail(x); + sink(list3.GetHead()); // $ ir + + CAtlList list4(10); + list4.AddTailList(&list3); + sink(list4.GetHead()); // $ ir + + { + CAtlList list5(10); + auto pos = list5.Find(x, list5.GetHeadPosition()); + sink(list5.GetAt(pos)); // $ MISSING: ir + } + + { + CAtlList list6(10); + list6.AddHead(x); + auto pos = list6.FindIndex(0); + sink(list6.GetAt(pos)); // $ ir + } + + { + CAtlList list7(10); + auto pos = list7.GetTailPosition(); + list7.InsertAfter(pos, x); + sink(list7.GetHead()); // $ ir + } + + { + CAtlList list8(10); + auto pos = list8.GetTailPosition(); + list8.InsertBefore(pos, x); + sink(list8.GetHead()); // $ ir + } + { + CAtlList list9(10); + list9.SetAt(list9.GetHeadPosition(), x); + sink(list9.GetHead()); // $ ir + } + } + + int* p = indirect_source(); + { + CAtlList list(10); + sink(list.GetHead()); + list.AddHead(p); + sink(list.GetHead()); // $ ir + + CAtlList list2(10); + list2.AddHeadList(&list); + sink(list2.GetHead()); // $ ir + + CAtlList list3(10); + list3.AddTail(p); + sink(list3.GetHead()); // $ ir + + CAtlList list4(10); + list4.AddTailList(&list3); + sink(list4.GetHead()); // $ ir + + { + CAtlList list5(10); + auto pos = list5.Find(p, list5.GetHeadPosition()); + sink(list5.GetAt(pos)); // $ MISSING: ir + } + + { + CAtlList list6(10); + list6.AddHead(p); + auto pos = list6.FindIndex(0); + sink(list6.GetAt(pos)); // $ ir + } + + { + CAtlList list7(10); + auto pos = list7.GetTailPosition(); + list7.InsertAfter(pos, p); + sink(list7.GetHead()); // $ ir + } + + { + CAtlList list8(10); + auto pos = list8.GetTailPosition(); + list8.InsertBefore(pos, p); + sink(list8.GetHead()); // $ ir + } + { + CAtlList list9(10); + list9.SetAt(list9.GetHeadPosition(), p); + sink(list9.GetHead()); // $ ir + } + } + } + + struct IUnknown { }; + + struct ISequentialStream : public IUnknown { }; + + struct IStream : public ISequentialStream { }; + + struct CComBSTR { + CComBSTR() throw(); + CComBSTR(const CComBSTR& src); + CComBSTR(int nSize); + CComBSTR(int nSize, LPCOLESTR sz); + CComBSTR(int nSize, LPCSTR sz); + CComBSTR(LPCOLESTR pSrc); + CComBSTR(LPCSTR pSrc); + CComBSTR(CComBSTR&& src) throw(); + ~CComBSTR(); + + HRESULT Append(const CComBSTR& bstrSrc) throw(); + HRESULT Append(wchar_t ch) throw(); + HRESULT Append(char ch) throw(); + HRESULT Append(LPCOLESTR lpsz) throw(); + HRESULT Append(LPCSTR lpsz) throw(); + HRESULT Append(LPCOLESTR lpsz, int nLen) throw(); + HRESULT AppendBSTR(BSTR p) throw(); + HRESULT AppendBytes(const char* lpsz, int nLen) throw(); + HRESULT ArrayToBSTR(const SAFEARRAY* pSrc) throw(); + HRESULT AssignBSTR(const BSTR bstrSrc) throw(); + void Attach(BSTR src) throw(); + HRESULT BSTRToArray(LPSAFEARRAY* ppArray) throw(); + unsigned int ByteLength() const throw(); + BSTR Copy() const throw(); + HRESULT CopyTo(BSTR* pbstr) throw(); + + HRESULT CopyTo(VARIANT* pvarDest) throw(); + BSTR Detach() throw(); + void Empty() throw(); + unsigned int Length() const throw(); + bool LoadString(HINSTANCE hInst, UINT nID) throw(); + bool LoadString(UINT nID) throw(); + HRESULT ReadFromStream(IStream* pStream) throw(); + HRESULT ToUpper() throw(); + HRESULT WriteToStream(IStream* pStream) throw(); + + operator BSTR() const throw(); + BSTR* operator&() throw(); + + CComBSTR& operator+= (const CComBSTR& bstrSrc); + CComBSTR& operator+= (const LPCOLESTR pszSrc); + + BSTR m_str; + }; + + LPSAFEARRAY getSafeArray() { + SAFEARRAY* safe = new SAFEARRAY; + safe->pvData = indirect_source(); + return safe; + } + + void test_CComBSTR() { + char* x = indirect_source(); + { + CComBSTR b(x); + sink(b.m_str); // $ ir + + CComBSTR b2(b); + sink(b2.m_str); // $ ir + } + { + CComBSTR b(10, x); + sink(b.m_str); // $ ir + } + { + CComBSTR b(x); + + CComBSTR b2; + sink(b2.m_str); + b2 += b; + sink(b2.m_str); // $ ir + + CComBSTR b3; + b3 += x; + sink(b3.m_str); // $ ir + sink(static_cast(b3)); // $ ir + sink(**&b3); // $ ir + + CComBSTR b4; + b4.Append(source()); + sink(b4.m_str); // $ ir + + CComBSTR b5; + b5.AppendBSTR(b4.m_str); + sink(b5.m_str); // $ ir + + CComBSTR b6; + b6.AppendBytes(x, 10); + sink(b6.m_str); // $ ir + + CComBSTR b7; + b7.ArrayToBSTR(getSafeArray()); + sink(b7.m_str); // $ ir + + CComBSTR b8; + b8.AssignBSTR(b7.m_str); + sink(b8.m_str); // $ ir + + CComBSTR b9; + LPSAFEARRAY safe; + b9.Append(source()); + b9.BSTRToArray(&safe); + sink(safe->pvData); // $ ir + + sink(b9.Copy()); // $ ir + } + + wchar_t* w = indirect_source(); + { + CComBSTR b(w); + sink(b.m_str); // $ ir + + CComBSTR b2; + b2.Attach(w); + sink(b2.m_str); // $ ir + } + { + CComBSTR b(10, w); + sink(b.m_str); // $ ir + } + } + + template + struct CComSafeArray { + CComSafeArray(); + CComSafeArray(const SAFEARRAYBOUND& bound); + CComSafeArray(ULONG ulCount, LONG lLBound); + CComSafeArray(const SAFEARRAYBOUND* pBound, UINT uDims); + CComSafeArray(const CComSafeArray& saSrc); + CComSafeArray(const SAFEARRAY& saSrc); + CComSafeArray(const SAFEARRAY* psaSrc); + + ~CComSafeArray() throw(); + + HRESULT Add(const SAFEARRAY* psaSrc); + HRESULT Add(ULONG ulCount, const T* pT, BOOL bCopy); + HRESULT Add(const T& t, BOOL bCopy); + HRESULT Attach(const SAFEARRAY* psaSrc); + HRESULT CopyFrom(LPSAFEARRAY* ppArray); + HRESULT CopyTo(LPSAFEARRAY* ppArray); + HRESULT Create(const SAFEARRAYBOUND* pBound, UINT uDims); + HRESULT Create(ULONG ulCount, LONG lLBound); + HRESULT Destroy(); + LPSAFEARRAY Detach(); + T& GetAt(LONG lIndex) const; + ULONG GetCount(UINT uDim) const; + UINT GetDimensions() const; + LONG GetLowerBound(UINT uDim) const; + LPSAFEARRAY GetSafeArrayPtr() throw(); + LONG GetUpperBound(UINT uDim) const; + bool IsSizable() const; + HRESULT MultiDimGetAt(const LONG* alIndex, T& t); + HRESULT MultiDimSetAt(const LONG* alIndex, const T& t); + HRESULT Resize(const SAFEARRAYBOUND* pBound); + HRESULT Resize(ULONG ulCount, LONG lLBound); + HRESULT SetAt(LONG lIndex, const T& t, BOOL bCopy); + operator LPSAFEARRAY() const; + T& operator[](long lindex) const; + T& operator[](int nindex) const; + + LPSAFEARRAY m_psa; + }; + + void test_CComSafeArray() { + LPSAFEARRAY safe = getSafeArray(); sink(safe->pvData); // $ ir - - sink(b9.Copy()); // $ ir - } - - wchar_t* w = indirect_source(); - { - CComBSTR b(w); - sink(b.m_str); // $ ir - - CComBSTR b2; - b2.Attach(w); - sink(b2.m_str); // $ ir - } - { - CComBSTR b(10, w); - sink(b.m_str); // $ ir - } -} - -template -struct CComSafeArray { - CComSafeArray(); - CComSafeArray(const SAFEARRAYBOUND& bound); - CComSafeArray(ULONG ulCount, LONG lLBound); - CComSafeArray(const SAFEARRAYBOUND* pBound, UINT uDims); - CComSafeArray(const CComSafeArray& saSrc); - CComSafeArray(const SAFEARRAY& saSrc); - CComSafeArray(const SAFEARRAY* psaSrc); - - ~CComSafeArray() throw(); - - HRESULT Add(const SAFEARRAY* psaSrc); - HRESULT Add(ULONG ulCount, const T* pT, BOOL bCopy); - HRESULT Add(const T& t, BOOL bCopy); - HRESULT Attach(const SAFEARRAY* psaSrc); - HRESULT CopyFrom(LPSAFEARRAY* ppArray); - HRESULT CopyTo(LPSAFEARRAY* ppArray); - HRESULT Create(const SAFEARRAYBOUND* pBound, UINT uDims); - HRESULT Create(ULONG ulCount, LONG lLBound); - HRESULT Destroy(); - LPSAFEARRAY Detach(); - T& GetAt(LONG lIndex) const; - ULONG GetCount(UINT uDim) const; - UINT GetDimensions() const; - LONG GetLowerBound(UINT uDim) const; - LPSAFEARRAY GetSafeArrayPtr() throw(); - LONG GetUpperBound(UINT uDim) const; - bool IsSizable() const; - HRESULT MultiDimGetAt(const LONG* alIndex, T& t); - HRESULT MultiDimSetAt(const LONG* alIndex, const T& t); - HRESULT Resize(const SAFEARRAYBOUND* pBound); - HRESULT Resize(ULONG ulCount, LONG lLBound); - HRESULT SetAt(LONG lIndex, const T& t, BOOL bCopy); - operator LPSAFEARRAY() const; - T& operator[](long lindex) const; - T& operator[](int nindex) const; - - LPSAFEARRAY m_psa; -}; - -void test_CComSafeArray() { - LPSAFEARRAY safe = getSafeArray(); - sink(safe->pvData); // $ ir - { - CComSafeArray c(safe); - sink(c[0]); // $ ir - sink(c.GetAt(0)); // $ ir - sink(c.GetSafeArrayPtr()->pvData); // $ ir - sink(c.m_psa->pvData); // $ ir - } - { - CComSafeArray c; - sink(c[0]); - sink(c.GetAt(0)); - sink(c.GetSafeArrayPtr()->pvData); - c.Add(safe); + { + CComSafeArray c(safe); sink(c[0]); // $ ir sink(c.GetAt(0)); // $ ir sink(c.GetSafeArrayPtr()->pvData); // $ ir - sink(static_cast(c)->pvData); // $ ir + sink(c.m_psa->pvData); // $ ir + } + { + CComSafeArray c; + sink(c[0]); + sink(c.GetAt(0)); + sink(c.GetSafeArrayPtr()->pvData); + c.Add(safe); + sink(c[0]); // $ ir + sink(c.GetAt(0)); // $ ir + sink(c.GetSafeArrayPtr()->pvData); // $ ir + sink(static_cast(c)->pvData); // $ ir + } + { + CComSafeArray c; + c.Add(source(), true); + sink(c[0]); // $ ir + sink(c.GetAt(0)); // $ ir + sink(c.GetSafeArrayPtr()->pvData); // $ ir + } + { + CComSafeArray c; + c.SetAt(0, source(), true); + sink(c[0]); // $ ir + sink(c[0L]); // $ ir + } } - { - CComSafeArray c; - c.Add(source(), true); - sink(c[0]); // $ ir - sink(c.GetAt(0)); // $ ir - sink(c.GetSafeArrayPtr()->pvData); // $ ir - } - { - CComSafeArray c; - c.SetAt(0, source(), true); - sink(c[0]); // $ ir - sink(c[0L]); // $ ir - } -} -template -struct CPathT { - typedef StringType PCXSTR; // simplified - CPathT(PCXSTR pszPath); - CPathT(const CPathT& path); - CPathT() throw(); + template + struct CPathT { + typedef StringType PCXSTR; // simplified + CPathT(PCXSTR pszPath); + CPathT(const CPathT& path); + CPathT() throw(); - void AddBackslash(); - BOOL AddExtension(PCXSTR pszExtension); - BOOL Append(PCXSTR pszMore); - void BuildRoot(int iDrive); - void Canonicalize(); - void Combine(PCXSTR pszDir, PCXSTR pszFile); - CPathT CommonPrefix(PCXSTR pszOther); - BOOL CompactPathEx(UINT nMaxChars, DWORD dwFlags); - BOOL FileExists() const; - int FindExtension() const; - int FindFileName() const; - int GetDriveNumber() const; - StringType GetExtension() const; - BOOL IsDirectory() const; - BOOL IsFileSpec() const; - BOOL IsPrefix(PCXSTR pszPrefix) const; - BOOL IsRelative() const; - BOOL IsRoot() const; - BOOL IsSameRoot(PCXSTR pszOther) const; - BOOL IsUNC() const; - BOOL IsUNCServer() const; - BOOL IsUNCServerShare() const; - BOOL MakePretty(); - BOOL MatchSpec(PCXSTR pszSpec) const; - void QuoteSpaces(); - BOOL RelativePathTo( - PCXSTR pszFrom, - DWORD dwAttrFrom, - PCXSTR pszTo, - DWORD dwAttrTo); - void RemoveArgs(); - void RemoveBackslash(); - void RemoveBlanks(); - void RemoveExtension(); - BOOL RemoveFileSpec(); - BOOL RenameExtension(PCXSTR pszExtension); - int SkipRoot() const; - void StripPath(); - BOOL StripToRoot(); - void UnquoteSpaces(); - operator const StringType&() const throw(); - operator PCXSTR() const throw(); - operator StringType&() throw(); - CPathT& operator+=(PCXSTR pszMore); - - StringType m_strPath; -}; + void AddBackslash(); + BOOL AddExtension(PCXSTR pszExtension); + BOOL Append(PCXSTR pszMore); + void BuildRoot(int iDrive); + void Canonicalize(); + void Combine(PCXSTR pszDir, PCXSTR pszFile); + CPathT CommonPrefix(PCXSTR pszOther); + BOOL CompactPathEx(UINT nMaxChars, DWORD dwFlags); + BOOL FileExists() const; + int FindExtension() const; + int FindFileName() const; + int GetDriveNumber() const; + StringType GetExtension() const; + BOOL IsDirectory() const; + BOOL IsFileSpec() const; + BOOL IsPrefix(PCXSTR pszPrefix) const; + BOOL IsRelative() const; + BOOL IsRoot() const; + BOOL IsSameRoot(PCXSTR pszOther) const; + BOOL IsUNC() const; + BOOL IsUNCServer() const; + BOOL IsUNCServerShare() const; + BOOL MakePretty(); + BOOL MatchSpec(PCXSTR pszSpec) const; + void QuoteSpaces(); + BOOL RelativePathTo( + PCXSTR pszFrom, + DWORD dwAttrFrom, + PCXSTR pszTo, + DWORD dwAttrTo); + void RemoveArgs(); + void RemoveBackslash(); + void RemoveBlanks(); + void RemoveExtension(); + BOOL RemoveFileSpec(); + BOOL RenameExtension(PCXSTR pszExtension); + int SkipRoot() const; + void StripPath(); + BOOL StripToRoot(); + void UnquoteSpaces(); + operator const StringType&() const throw(); + operator PCXSTR() const throw(); + operator StringType&() throw(); + CPathT& operator+=(PCXSTR pszMore); + + StringType m_strPath; + }; -using CPath = CPathT; + using CPath = CPathT; -void test_CPathT() { - char* x = indirect_source(); - CPath p(x); - sink(static_cast(p)); // $ MISSING: ir - sink(p.m_strPath); // $ ir - - CPath p2(p); - sink(p2.m_strPath); // $ ir - - { - CPath p; - p.AddExtension(x); - sink(p.m_strPath); // $ ir - } - { - CPath p; - p.Append(x); + void test_CPathT() { + char* x = indirect_source(); + CPath p(x); + sink(static_cast(p)); // $ MISSING: ir sink(p.m_strPath); // $ ir - CPath p2; - p2 += p; - sink(p2.m_strPath); // $ MISSING: ir // this requires flow through `operator StringType&()` which we can't yet model in MaD - - CPath p3; - p3 += x; - sink(p3.m_strPath); // $ ir - } - - { - CPath p; - p.Combine(x, nullptr); - sink(p.m_strPath); // $ ir - } - { - CPath p; - p.Combine(nullptr, x); - sink(p.m_strPath); // $ ir - } - - { - CPath p; - auto p2 = p.CommonPrefix(x); + CPath p2(p); sink(p2.m_strPath); // $ ir - sink(p2.GetExtension()); // $ ir + + { + CPath p; + p.AddExtension(x); + sink(p.m_strPath); // $ ir + } + { + CPath p; + p.Append(x); + sink(p.m_strPath); // $ ir + + CPath p2; + p2 += p; + sink(p2.m_strPath); // $ MISSING: ir // this requires flow through `operator StringType&()` which we can't yet model in MaD + + CPath p3; + p3 += x; + sink(p3.m_strPath); // $ ir + } + + { + CPath p; + p.Combine(x, nullptr); + sink(p.m_strPath); // $ ir + } + { + CPath p; + p.Combine(nullptr, x); + sink(p.m_strPath); // $ ir + } + + { + CPath p; + auto p2 = p.CommonPrefix(x); + sink(p2.m_strPath); // $ ir + sink(p2.GetExtension()); // $ ir + } } -} -template -struct CSimpleArray { - CSimpleArray(const CSimpleArray& src); - CSimpleArray(); - ~CSimpleArray(); + template + struct CSimpleArray { + CSimpleArray(const CSimpleArray& src); + CSimpleArray(); + ~CSimpleArray(); - BOOL Add(const T& t); - int Find(const T& t) const; - T* GetData() const; - int GetSize() const; - BOOL Remove(const T& t); - void RemoveAll(); - BOOL RemoveAt(int nIndex); - - BOOL SetAtIndex( - int nIndex, - const T& t); - - T& operator[](int nindex); - CSimpleArray & operator=(const CSimpleArray& src); -}; + BOOL Add(const T& t); + int Find(const T& t) const; + T* GetData() const; + int GetSize() const; + BOOL Remove(const T& t); + void RemoveAll(); + BOOL RemoveAt(int nIndex); + + BOOL SetAtIndex( + int nIndex, + const T& t); + + T& operator[](int nindex); + CSimpleArray & operator=(const CSimpleArray& src); + }; -void test_CSimpleArray() { - int x = source(); - { - CSimpleArray a; - a.Add(x); - sink(a[0]); // $ ir - a.Add(0); - sink(a[0]); // $ ir + void test_CSimpleArray() { + int x = source(); + { + CSimpleArray a; + a.Add(x); + sink(a[0]); // $ ir + a.Add(0); + sink(a[0]); // $ ir - CSimpleArray a2; - sink(a2[0]); - a2 = a; - sink(a2[0]); // $ ir + CSimpleArray a2; + sink(a2[0]); + a2 = a; + sink(a2[0]); // $ ir + } + { + CSimpleArray a; + a.Add(x); + sink(a.GetData()); // $ ir + + CSimpleArray a2; + int pos = a2.Find(x); + sink(a2[pos]); // $ MISSING: ir + } } - { - CSimpleArray a; - a.Add(x); - sink(a.GetData()); // $ ir - CSimpleArray a2; - int pos = a2.Find(x); - sink(a2[pos]); // $ MISSING: ir + template + struct CSimpleMap { + CSimpleMap(); + ~CSimpleMap(); + + BOOL Add(const TKey& key, const TVal& val); + int FindKey(const TKey& key) const; + int FindVal(const TVal& val) const; + TKey& GetKeyAt(int nIndex) const; + int GetSize() const; + TVal& GetValueAt(int nIndex) const; + TVal Lookup(const TKey& key) const; + BOOL Remove(const TKey& key); + void RemoveAll(); + BOOL RemoveAt(int nIndex); + TKey ReverseLookup(const TVal& val) const; + BOOL SetAt(const TKey& key, const TVal& val); + BOOL SetAtIndex(int nIndex, const TKey& key, const TVal& val); + }; + + void test_CSimpleMap() { + wchar_t* x = source(); + { + CSimpleMap a; + a.Add("hello", x); + sink(a.Lookup("hello")); // $ ir + } + { + CSimpleMap a; + auto pos = a.FindKey("hello"); + sink(a.GetValueAt(pos)); // clean + } + { + CSimpleMap a; + auto pos = a.FindVal(x); + sink(a.GetValueAt(pos)); // $ MISSING: ir + } + { + CSimpleMap a; + auto key = a.ReverseLookup(x); + sink(key); + sink(a.Lookup(key)); // $ MISSING: ir + } + { + CSimpleMap a; + a.SetAt("hello", x); + sink(a.Lookup("hello")); // $ ir + } + { + CSimpleMap a; + a.SetAtIndex(0, "hello", x); + sink(a.Lookup("hello")); // $ ir + } } -} -template -struct CSimpleMap { - CSimpleMap(); - ~CSimpleMap(); + struct CUrl { + CUrl& operator= (const CUrl& urlThat) throw(); + CUrl() throw(); + CUrl(const CUrl& urlThat) throw(); + ~CUrl() throw(); - BOOL Add(const TKey& key, const TVal& val); - int FindKey(const TKey& key) const; - int FindVal(const TVal& val) const; - TKey& GetKeyAt(int nIndex) const; - int GetSize() const; - TVal& GetValueAt(int nIndex) const; - TVal Lookup(const TKey& key) const; - BOOL Remove(const TKey& key); - void RemoveAll(); - BOOL RemoveAt(int nIndex); - TKey ReverseLookup(const TVal& val) const; - BOOL SetAt(const TKey& key, const TVal& val); - BOOL SetAtIndex(int nIndex, const TKey& key, const TVal& val); -}; + inline BOOL Canonicalize(DWORD dwFlags) throw(); + inline void Clear() throw(); -void test_CSimpleMap() { - wchar_t* x = source(); - { - CSimpleMap a; - a.Add("hello", x); - sink(a.Lookup("hello")); // $ ir + BOOL CrackUrl(LPCTSTR lpszUrl, DWORD dwFlags) throw(); + inline BOOL CreateUrl(LPTSTR lpszUrl, DWORD* pdwMaxLength, DWORD dwFlags) const throw(); + + inline LPCTSTR GetExtraInfo() const throw(); + inline DWORD GetExtraInfoLength() const throw(); + inline LPCTSTR GetHostName() const throw(); + inline DWORD GetHostNameLength() const throw(); + inline LPCTSTR GetPassword() const throw(); + inline DWORD GetPasswordLength() const throw(); + inline ATL_URL_PORT GetPortNumber() const throw(); + inline ATL_URL_SCHEME GetScheme() const throw(); + inline LPCTSTR GetSchemeName() const throw(); + inline DWORD GetSchemeNameLength() const throw(); + inline DWORD GetUrlLength() const throw(); + inline LPCTSTR GetUrlPath() const throw(); + inline DWORD GetUrlPathLength() const throw(); + inline LPCTSTR GetUserName() const throw(); + inline DWORD GetUserNameLength() const throw(); + inline BOOL SetExtraInfo(LPCTSTR lpszInfo) throw(); + inline BOOL SetHostName(LPCTSTR lpszHost) throw(); + inline BOOL SetPassword(LPCTSTR lpszPass) throw(); + inline BOOL SetPortNumber(ATL_URL_PORT nPrt) throw(); + inline BOOL SetScheme(ATL_URL_SCHEME nScheme) throw(); + inline BOOL SetSchemeName(LPCTSTR lpszSchm) throw(); + inline BOOL SetUrlPath(LPCTSTR lpszPath) throw(); + inline BOOL SetUserName(LPCTSTR lpszUser) throw(); + }; + + void test_CUrl() { + char* x = indirect_source(); + CUrl url; + url.CrackUrl(x, 0); + sink(url); // $ ir + sink(url.GetExtraInfo()); // $ ir + sink(url.GetHostName()); // $ ir + sink(url.GetPassword()); // $ ir + sink(url.GetSchemeName()); // $ ir + sink(url.GetUrlPath()); // $ ir + sink(url.GetUserName()); // $ ir + + { + CUrl url2; + DWORD len; + char buffer[1024]; + url2.CrackUrl(x, 0); + url2.CreateUrl(buffer, &len, 0); + sink(buffer); // $ ast ir + } + { + CUrl url2; + url2.SetExtraInfo(x); + sink(url2); // $ ir + } + { + CUrl url2; + url2.SetHostName(x); + sink(url2); // $ ir + } + { + CUrl url2; + url2.SetPassword(x); + sink(url2); // $ ir + } + { + CUrl url2; + url2.SetSchemeName(x); + sink(url2); // $ ir + } + { + CUrl url2; + url2.SetUrlPath(x); + sink(url2); // $ ir + } + { + CUrl url2; + url2.SetUserName(x); + sink(url2); // $ ir + } } - { - CSimpleMap a; - auto pos = a.FindKey("hello"); - sink(a.GetValueAt(pos)); // clean + + struct IAtlStringMgr {}; // simplified + + using XCHAR = char; + using YCHAR = wchar_t; + + template + struct CSimpleStringT { + using PCXSTR = const BaseType*; // simplified + using PXSTR = BaseType*; // simplified + + CSimpleStringT() throw(); + CSimpleStringT(const XCHAR* pchSrc, int nLength, IAtlStringMgr* pStringMgr); + CSimpleStringT(PCXSTR pszSrc, IAtlStringMgr* pStringMgr); + CSimpleStringT(const CSimpleStringT& strSrc); + + ~CSimpleStringT() throw(); + + void Append(const CSimpleStringT& strSrc); + void Append(PCXSTR pszSrc, int nLength); + void Append(PCXSTR pszSrc); + + void AppendChar(XCHAR ch); + + static void CopyChars(XCHAR* pchDest, const XCHAR* pchSrc, int nChars) throw(); + static void CopyChars(XCHAR* pchDest, size_t nDestLen, const XCHAR* pchSrc, int nChars) throw(); + static void CopyCharsOverlapped(XCHAR* pchDest, const XCHAR* pchSrc, int nChars) throw(); + + XCHAR GetAt(int iChar) const; + PXSTR GetBuffer(int nMinBufferLength); + PXSTR GetBuffer(); + PXSTR GetBufferSetLength(int nLength); + + PCXSTR GetString() const throw(); + PXSTR LockBuffer(); + void SetAt(int iChar, XCHAR ch); + void SetString(PCXSTR pszSrc, int nLength); + void SetString(PCXSTR pszSrc); + operator PCXSTR() const throw(); + XCHAR operator[](int iChar) const; + + CSimpleStringT& operator+=(PCXSTR pszSrc); + CSimpleStringT& operator+=(const CSimpleStringT& strSrc); + CSimpleStringT& operator+=(char ch); + CSimpleStringT& operator+=(unsigned char ch); + CSimpleStringT& operator+=(wchar_t ch); + + CSimpleStringT& operator=(PCXSTR pszSrc); + CSimpleStringT& operator=(const CSimpleStringT& strSrc); + }; + + void test_CSimpleStringT() { + char* x = indirect_source(); + + CSimpleStringT s1(x, 10, nullptr); + sink(s1.GetString()); // $ ir + + CSimpleStringT s2(x, nullptr); + sink(s2.GetString()); // $ ir + + CSimpleStringT s3(s2); + sink(s3.GetString()); // $ ir + + CSimpleStringT s4; + s4.Append(indirect_source()); + sink(s4.GetString()); // $ ir + + CSimpleStringT s5; + s5.Append(s4); + sink(s5.GetString()); // $ ir + + CSimpleStringT s6; + s6.Append(indirect_source(), 42); + sink(s6.GetString()); // $ ir + + char buffer1[128]; + CSimpleStringT::CopyChars(buffer1, x, 10); + sink(buffer1); // $ ast ir + + char buffer2[128]; + CSimpleStringT::CopyChars(buffer2, 128, x, 10); + sink(buffer2); // $ ast ir + + char buffer3[128]; + CSimpleStringT::CopyCharsOverlapped(buffer3, x, 10); + sink(buffer3); // $ ast ir + + sink(s4.GetAt(0)); // $ ir + sink(s4.GetBuffer(10)); // $ ir + sink(s4.GetBuffer()); // $ ir + sink(s4.GetBufferSetLength(10)); // $ ir + + sink(s4.LockBuffer()); // $ ir + + CSimpleStringT s7; + s7.SetAt(0, source()); + sink(s7.GetAt(0)); // $ ir + + CSimpleStringT s8; + s8.SetString(indirect_source()); + sink(s8.GetAt(0)); // $ ir + + CSimpleStringT s9; + s9.SetString(indirect_source(), 1024); + sink(s9.GetAt(0)); // $ ir + + sink(static_cast::PCXSTR>(s1)); // $ ir + + sink(s1[0]); // $ ir } - { - CSimpleMap a; - auto pos = a.FindVal(x); - sink(a.GetValueAt(pos)); // $ MISSING: ir + + template + struct MakeOther {}; + + template<> + struct MakeOther { + using other_t = wchar_t; + }; + + template<> + struct MakeOther { + using other_t = char; + }; + + template + struct CStringT : public CSimpleStringT { + using XCHAR = BaseType; // simplified + using YCHAR = typename MakeOther::other_t; // simplified + using PCXSTR = typename CSimpleStringT::PCXSTR; + using PXSTR = typename CSimpleStringT::PXSTR; + CStringT() throw(); + + CStringT(IAtlStringMgr* pStringMgr) throw(); + CStringT(const VARIANT& varSrc); + CStringT(const VARIANT& varSrc, IAtlStringMgr* pStringMgr); + CStringT(const CStringT& strSrc); + CStringT(const CSimpleStringT& strSrc); + CStringT(const XCHAR* pszSrc); + CStringT(const YCHAR* pszSrc); + CStringT(LPCSTR pszSrc, IAtlStringMgr* pStringMgr); + CStringT(LPCWSTR pszSrc, IAtlStringMgr* pStringMgr); + CStringT(const unsigned char* pszSrc); + CStringT(char* pszSrc); + CStringT(unsigned char* pszSrc); + CStringT(wchar_t* pszSrc); + CStringT(const unsigned char* pszSrc, IAtlStringMgr* pStringMgr); + CStringT(char ch, int nLength = 1); + CStringT(wchar_t ch, int nLength = 1); + CStringT(const XCHAR* pch, int nLength); + CStringT(const YCHAR* pch, int nLength); + CStringT(const XCHAR* pch, int nLength, IAtlStringMgr* pStringMgr); + CStringT(const YCHAR* pch, int nLength, IAtlStringMgr* pStringMgr); + + operator CSimpleStringT &(); + + ~CStringT() throw(); + + BSTR AllocSysString() const; + void AppendFormat(PCXSTR pszFormat, ...); + void AppendFormat(UINT nFormatID, ...); + int Delete(int iIndex, int nCount = 1); + int Find(PCXSTR pszSub, int iStart=0) const throw(); + int Find(XCHAR ch, int iStart=0) const throw(); + int FindOneOf(PCXSTR pszCharSet) const throw(); + void Format(UINT nFormatID, ...); + void Format(PCXSTR pszFormat, ...); + BOOL GetEnvironmentVariable(PCXSTR pszVar); + int Insert(int iIndex, PCXSTR psz); + int Insert(int iIndex, XCHAR ch); + CStringT Left(int nCount) const; + BOOL LoadString(HINSTANCE hInstance, UINT nID, WORD wLanguageID); + BOOL LoadString(HINSTANCE hInstance, UINT nID); + BOOL LoadString(UINT nID); + CStringT& MakeLower(); + CStringT& MakeReverse(); + CStringT& MakeUpper(); + CStringT Mid(int iFirst, int nCount) const; + CStringT Mid(int iFirst) const; + int Replace(PCXSTR pszOld, PCXSTR pszNew); + int Replace(XCHAR chOld, XCHAR chNew); + CStringT Right(int nCount) const; + BSTR SetSysString(BSTR* pbstr) const; + CStringT SpanExcluding(PCXSTR pszCharSet) const; + CStringT SpanIncluding(PCXSTR pszCharSet) const; + CStringT Tokenize(PCXSTR pszTokens, int& iStart) const; + CStringT& Trim(XCHAR chTarget); + CStringT& Trim(PCXSTR pszTargets); + CStringT& Trim(); + CStringT& TrimLeft(XCHAR chTarget); + CStringT& TrimLeft(PCXSTR pszTargets); + CStringT& TrimLeft(); + CStringT& TrimRight(XCHAR chTarget); + CStringT& TrimRight(PCXSTR pszTargets); + CStringT& TrimRight(); + }; + + void test_CStringT() { + VARIANT v = source(); + + CStringT s1(v); + sink(s1.GetString()); // $ ir + + CStringT s2(v, nullptr); + sink(s2.GetString()); // $ ir + + CStringT s3(s2); + sink(s3.GetString()); // $ ir + + char* x = indirect_source(); + CStringT s4(x); + sink(s4.GetString()); // $ ir + + wchar_t* y = indirect_source(); + CStringT s5(y); + sink(s5.GetString()); // $ ir + + CStringT s6(x, nullptr); + sink(s6.GetString()); // $ ir + + CStringT s7(y, nullptr); + sink(s7.GetString()); // $ ir + + unsigned char* ucs = indirect_source(); + CStringT s8(ucs); + sink(s8.GetString()); // $ ir + + char c = source(); + CStringT s9(c); + sink(s9.GetString()); // $ ir + + wchar_t wc = source(); + CStringT s10(wc); + sink(s10.GetString()); // $ ir + + sink(static_cast&>(s1)); // $ ast ir + + auto bstr = s1.AllocSysString(); + sink(bstr); // $ ir + + CStringT s11; + s11.AppendFormat("%d", source()); + sink(s11.GetString()); // $ ir + + CStringT s12; + s12.AppendFormat(indirect_source()); + sink(s12.GetString()); // $ ir + + CStringT s13; + s13.AppendFormat(source()); + sink(s13.GetString()); // $ ir + + CStringT s14; + s14.AppendFormat(42, source()); + sink(s14.GetString()); // $ ir + + CStringT s15; + s15.AppendFormat(42, indirect_source()); + sink(s15.GetString()); // $ ir + + CStringT s16; + s16.AppendFormat("%s", indirect_source()); + + CStringT s17; + s17.Insert(0, x); + sink(s17.GetString()); // $ ir + + CStringT s18; + s18.Insert(0, source()); + sink(s18.GetString()); // $ ir + + sink(s1.Left(42).GetString()); // $ ir + + CStringT s20; + s20.LoadString(source()); + sink(s20.GetString()); // $ ir + + sink(s1.MakeLower().GetString()); // $ ir + sink(s1.MakeReverse().GetString()); // $ ir + sink(s1.MakeUpper().GetString()); // $ ir + sink(s1.Mid(0, 42).GetString()); // $ ir + + CStringT s21; + s21.Replace("abc", x); + sink(s21.GetString()); // $ ir + + CStringT s22; + s22.Replace('\n', source()); + sink(s22.GetString()); // $ ir + + sink(s2.Right(42).GetString()); // $ ir + + BSTR bstr2; + s1.SetSysString(&bstr2); + sink(bstr2); // $ ast ir + + sink(s1.SpanExcluding("abc").GetString()); // $ ir + sink(s1.SpanIncluding("abc").GetString()); // $ ir + + int start = 0; + sink(s1.Tokenize("abc", start).GetString()); // $ ir + + sink(s1.Trim('a').GetString()); // $ ir + sink(s1.Trim("abc").GetString()); // $ ir + sink(s1.Trim().GetString()); // $ ir + sink(s1.TrimLeft('a').GetString()); // $ ir + sink(s1.TrimLeft("abc").GetString()); // $ ir + sink(s1.TrimLeft().GetString()); // $ ir + sink(s1.TrimRight('a').GetString()); // $ ir + sink(s1.TrimRight("abc").GetString()); // $ ir + sink(s1.TrimRight().GetString()); // $ ir } - { - CSimpleMap a; - auto key = a.ReverseLookup(x); - sink(key); - sink(a.Lookup(key)); // $ MISSING: ir + + struct CStringData { + void* data() throw(); + }; + + void test_CStringData() { + CStringData d = source(); + sink(d.data()); // $ ir } - { - CSimpleMap a; - a.SetAt("hello", x); - sink(a.Lookup("hello")); // $ ir + + template + struct CStrBufT { + typedef CSimpleStringT StringType; + + using PCXSTR = typename StringType::PCXSTR; + using PXSTR = typename StringType::PXSTR; + + CStrBufT(StringType& str, int nMinLength, DWORD dwFlags); + CStrBufT(StringType& str); + + operator PCXSTR() const throw(); + operator PXSTR() throw(); + }; + + void test_CStrBufT() { + CStringT s = source>(); + CStrBufT b(s, 42, 0); + sink(static_cast::PCXSTR>(b)); // $ ir + sink(static_cast::PXSTR>(b)); // $ ir } - { - CSimpleMap a; - a.SetAtIndex(0, "hello", x); - sink(a.Lookup("hello")); // $ ir - } -} - -struct CUrl { - CUrl& operator= (const CUrl& urlThat) throw(); - CUrl() throw(); - CUrl(const CUrl& urlThat) throw(); - ~CUrl() throw(); - - inline BOOL Canonicalize(DWORD dwFlags) throw(); - inline void Clear() throw(); - - BOOL CrackUrl(LPCTSTR lpszUrl, DWORD dwFlags) throw(); - inline BOOL CreateUrl(LPTSTR lpszUrl, DWORD* pdwMaxLength, DWORD dwFlags) const throw(); - - inline LPCTSTR GetExtraInfo() const throw(); - inline DWORD GetExtraInfoLength() const throw(); - inline LPCTSTR GetHostName() const throw(); - inline DWORD GetHostNameLength() const throw(); - inline LPCTSTR GetPassword() const throw(); - inline DWORD GetPasswordLength() const throw(); - inline ATL_URL_PORT GetPortNumber() const throw(); - inline ATL_URL_SCHEME GetScheme() const throw(); - inline LPCTSTR GetSchemeName() const throw(); - inline DWORD GetSchemeNameLength() const throw(); - inline DWORD GetUrlLength() const throw(); - inline LPCTSTR GetUrlPath() const throw(); - inline DWORD GetUrlPathLength() const throw(); - inline LPCTSTR GetUserName() const throw(); - inline DWORD GetUserNameLength() const throw(); - inline BOOL SetExtraInfo(LPCTSTR lpszInfo) throw(); - inline BOOL SetHostName(LPCTSTR lpszHost) throw(); - inline BOOL SetPassword(LPCTSTR lpszPass) throw(); - inline BOOL SetPortNumber(ATL_URL_PORT nPrt) throw(); - inline BOOL SetScheme(ATL_URL_SCHEME nScheme) throw(); - inline BOOL SetSchemeName(LPCTSTR lpszSchm) throw(); - inline BOOL SetUrlPath(LPCTSTR lpszPath) throw(); - inline BOOL SetUserName(LPCTSTR lpszUser) throw(); -}; - -void test_CUrl() { - char* x = indirect_source(); - CUrl url; - url.CrackUrl(x, 0); - sink(url); // $ ir - sink(url.GetExtraInfo()); // $ ir - sink(url.GetHostName()); // $ ir - sink(url.GetPassword()); // $ ir - sink(url.GetSchemeName()); // $ ir - sink(url.GetUrlPath()); // $ ir - sink(url.GetUserName()); // $ ir - - { - CUrl url2; - DWORD len; - char buffer[1024]; - url2.CrackUrl(x, 0); - url2.CreateUrl(buffer, &len, 0); - sink(buffer); // $ ast ir - } - { - CUrl url2; - url2.SetExtraInfo(x); - sink(url2); // $ ir - } - { - CUrl url2; - url2.SetHostName(x); - sink(url2); // $ ir - } - { - CUrl url2; - url2.SetPassword(x); - sink(url2); // $ ir - } - { - CUrl url2; - url2.SetSchemeName(x); - sink(url2); // $ ir - } - { - CUrl url2; - url2.SetUrlPath(x); - sink(url2); // $ ir - } - { - CUrl url2; - url2.SetUserName(x); - sink(url2); // $ ir - } -} - -struct IAtlStringMgr {}; // simplified - -using XCHAR = char; -using YCHAR = wchar_t; - -template -struct CSimpleStringT { - using PCXSTR = const BaseType*; // simplified - using PXSTR = BaseType*; // simplified - - CSimpleStringT() throw(); - CSimpleStringT(const XCHAR* pchSrc, int nLength, IAtlStringMgr* pStringMgr); - CSimpleStringT(PCXSTR pszSrc, IAtlStringMgr* pStringMgr); - CSimpleStringT(const CSimpleStringT& strSrc); - - ~CSimpleStringT() throw(); - - void Append(const CSimpleStringT& strSrc); - void Append(PCXSTR pszSrc, int nLength); - void Append(PCXSTR pszSrc); - - void AppendChar(XCHAR ch); - - static void CopyChars(XCHAR* pchDest, const XCHAR* pchSrc, int nChars) throw(); - static void CopyChars(XCHAR* pchDest, size_t nDestLen, const XCHAR* pchSrc, int nChars) throw(); - static void CopyCharsOverlapped(XCHAR* pchDest, const XCHAR* pchSrc, int nChars) throw(); - - XCHAR GetAt(int iChar) const; - PXSTR GetBuffer(int nMinBufferLength); - PXSTR GetBuffer(); - PXSTR GetBufferSetLength(int nLength); - - PCXSTR GetString() const throw(); - PXSTR LockBuffer(); - void SetAt(int iChar, XCHAR ch); - void SetString(PCXSTR pszSrc, int nLength); - void SetString(PCXSTR pszSrc); - operator PCXSTR() const throw(); - XCHAR operator[](int iChar) const; - - CSimpleStringT& operator+=(PCXSTR pszSrc); - CSimpleStringT& operator+=(const CSimpleStringT& strSrc); - CSimpleStringT& operator+=(char ch); - CSimpleStringT& operator+=(unsigned char ch); - CSimpleStringT& operator+=(wchar_t ch); - - CSimpleStringT& operator=(PCXSTR pszSrc); - CSimpleStringT& operator=(const CSimpleStringT& strSrc); -}; - -void test_CSimpleStringT() { - char* x = indirect_source(); - - CSimpleStringT s1(x, 10, nullptr); - sink(s1.GetString()); // $ ir - - CSimpleStringT s2(x, nullptr); - sink(s2.GetString()); // $ ir - - CSimpleStringT s3(s2); - sink(s3.GetString()); // $ ir - - CSimpleStringT s4; - s4.Append(indirect_source()); - sink(s4.GetString()); // $ ir - - CSimpleStringT s5; - s5.Append(s4); - sink(s5.GetString()); // $ ir - - CSimpleStringT s6; - s6.Append(indirect_source(), 42); - sink(s6.GetString()); // $ ir - - char buffer1[128]; - CSimpleStringT::CopyChars(buffer1, x, 10); - sink(buffer1); // $ ast ir - - char buffer2[128]; - CSimpleStringT::CopyChars(buffer2, 128, x, 10); - sink(buffer2); // $ ast ir - - char buffer3[128]; - CSimpleStringT::CopyCharsOverlapped(buffer3, x, 10); - sink(buffer3); // $ ast ir - - sink(s4.GetAt(0)); // $ ir - sink(s4.GetBuffer(10)); // $ ir - sink(s4.GetBuffer()); // $ ir - sink(s4.GetBufferSetLength(10)); // $ ir - - sink(s4.LockBuffer()); // $ ir - - CSimpleStringT s7; - s7.SetAt(0, source()); - sink(s7.GetAt(0)); // $ ir - - CSimpleStringT s8; - s8.SetString(indirect_source()); - sink(s8.GetAt(0)); // $ ir - - CSimpleStringT s9; - s9.SetString(indirect_source(), 1024); - sink(s9.GetAt(0)); // $ ir - - sink(static_cast::PCXSTR>(s1)); // $ ir - - sink(s1[0]); // $ ir -} - -template -struct MakeOther {}; - -template<> -struct MakeOther { - using other_t = wchar_t; -}; - -template<> -struct MakeOther { - using other_t = char; -}; - -template -struct CStringT : public CSimpleStringT { - using XCHAR = BaseType; // simplified - using YCHAR = typename MakeOther::other_t; // simplified - using PCXSTR = typename CSimpleStringT::PCXSTR; - using PXSTR = typename CSimpleStringT::PXSTR; - CStringT() throw(); - - CStringT(IAtlStringMgr* pStringMgr) throw(); - CStringT(const VARIANT& varSrc); - CStringT(const VARIANT& varSrc, IAtlStringMgr* pStringMgr); - CStringT(const CStringT& strSrc); - CStringT(const CSimpleStringT& strSrc); - CStringT(const XCHAR* pszSrc); - CStringT(const YCHAR* pszSrc); - CStringT(LPCSTR pszSrc, IAtlStringMgr* pStringMgr); - CStringT(LPCWSTR pszSrc, IAtlStringMgr* pStringMgr); - CStringT(const unsigned char* pszSrc); - CStringT(char* pszSrc); - CStringT(unsigned char* pszSrc); - CStringT(wchar_t* pszSrc); - CStringT(const unsigned char* pszSrc, IAtlStringMgr* pStringMgr); - CStringT(char ch, int nLength = 1); - CStringT(wchar_t ch, int nLength = 1); - CStringT(const XCHAR* pch, int nLength); - CStringT(const YCHAR* pch, int nLength); - CStringT(const XCHAR* pch, int nLength, IAtlStringMgr* pStringMgr); - CStringT(const YCHAR* pch, int nLength, IAtlStringMgr* pStringMgr); - - operator CSimpleStringT &(); - - ~CStringT() throw(); - - BSTR AllocSysString() const; - void AppendFormat(PCXSTR pszFormat, ...); - void AppendFormat(UINT nFormatID, ...); - int Delete(int iIndex, int nCount = 1); - int Find(PCXSTR pszSub, int iStart=0) const throw(); - int Find(XCHAR ch, int iStart=0) const throw(); - int FindOneOf(PCXSTR pszCharSet) const throw(); - void Format(UINT nFormatID, ...); - void Format(PCXSTR pszFormat, ...); - BOOL GetEnvironmentVariable(PCXSTR pszVar); - int Insert(int iIndex, PCXSTR psz); - int Insert(int iIndex, XCHAR ch); - CStringT Left(int nCount) const; - BOOL LoadString(HINSTANCE hInstance, UINT nID, WORD wLanguageID); - BOOL LoadString(HINSTANCE hInstance, UINT nID); - BOOL LoadString(UINT nID); - CStringT& MakeLower(); - CStringT& MakeReverse(); - CStringT& MakeUpper(); - CStringT Mid(int iFirst, int nCount) const; - CStringT Mid(int iFirst) const; - int Replace(PCXSTR pszOld, PCXSTR pszNew); - int Replace(XCHAR chOld, XCHAR chNew); - CStringT Right(int nCount) const; - BSTR SetSysString(BSTR* pbstr) const; - CStringT SpanExcluding(PCXSTR pszCharSet) const; - CStringT SpanIncluding(PCXSTR pszCharSet) const; - CStringT Tokenize(PCXSTR pszTokens, int& iStart) const; - CStringT& Trim(XCHAR chTarget); - CStringT& Trim(PCXSTR pszTargets); - CStringT& Trim(); - CStringT& TrimLeft(XCHAR chTarget); - CStringT& TrimLeft(PCXSTR pszTargets); - CStringT& TrimLeft(); - CStringT& TrimRight(XCHAR chTarget); - CStringT& TrimRight(PCXSTR pszTargets); - CStringT& TrimRight(); -}; - -void test_CStringT() { - VARIANT v = source(); - - CStringT s1(v); - sink(s1.GetString()); // $ ir - - CStringT s2(v, nullptr); - sink(s2.GetString()); // $ ir - - CStringT s3(s2); - sink(s3.GetString()); // $ ir - - char* x = indirect_source(); - CStringT s4(x); - sink(s4.GetString()); // $ ir - - wchar_t* y = indirect_source(); - CStringT s5(y); - sink(s5.GetString()); // $ ir - - CStringT s6(x, nullptr); - sink(s6.GetString()); // $ ir - - CStringT s7(y, nullptr); - sink(s7.GetString()); // $ ir - - unsigned char* ucs = indirect_source(); - CStringT s8(ucs); - sink(s8.GetString()); // $ ir - - char c = source(); - CStringT s9(c); - sink(s9.GetString()); // $ ir - - wchar_t wc = source(); - CStringT s10(wc); - sink(s10.GetString()); // $ ir - - sink(static_cast&>(s1)); // $ ast ir - - auto bstr = s1.AllocSysString(); - sink(bstr); // $ ir - - CStringT s11; - s11.AppendFormat("%d", source()); - sink(s11.GetString()); // $ ir - - CStringT s12; - s12.AppendFormat(indirect_source()); - sink(s12.GetString()); // $ ir - - CStringT s13; - s13.AppendFormat(source()); - sink(s13.GetString()); // $ ir - - CStringT s14; - s14.AppendFormat(42, source()); - sink(s14.GetString()); // $ ir - - CStringT s15; - s15.AppendFormat(42, indirect_source()); - sink(s15.GetString()); // $ ir - - CStringT s16; - s16.AppendFormat("%s", indirect_source()); - - CStringT s17; - s17.Insert(0, x); - sink(s17.GetString()); // $ ir - - CStringT s18; - s18.Insert(0, source()); - sink(s18.GetString()); // $ ir - - sink(s1.Left(42).GetString()); // $ ir - - CStringT s20; - s20.LoadString(source()); - sink(s20.GetString()); // $ ir - - sink(s1.MakeLower().GetString()); // $ ir - sink(s1.MakeReverse().GetString()); // $ ir - sink(s1.MakeUpper().GetString()); // $ ir - sink(s1.Mid(0, 42).GetString()); // $ ir - - CStringT s21; - s21.Replace("abc", x); - sink(s21.GetString()); // $ ir - - CStringT s22; - s22.Replace('\n', source()); - sink(s22.GetString()); // $ ir - - sink(s2.Right(42).GetString()); // $ ir - - BSTR bstr2; - s1.SetSysString(&bstr2); - sink(bstr2); // $ ast ir - - sink(s1.SpanExcluding("abc").GetString()); // $ ir - sink(s1.SpanIncluding("abc").GetString()); // $ ir - - int start = 0; - sink(s1.Tokenize("abc", start).GetString()); // $ ir - - sink(s1.Trim('a').GetString()); // $ ir - sink(s1.Trim("abc").GetString()); // $ ir - sink(s1.Trim().GetString()); // $ ir - sink(s1.TrimLeft('a').GetString()); // $ ir - sink(s1.TrimLeft("abc").GetString()); // $ ir - sink(s1.TrimLeft().GetString()); // $ ir - sink(s1.TrimRight('a').GetString()); // $ ir - sink(s1.TrimRight("abc").GetString()); // $ ir - sink(s1.TrimRight().GetString()); // $ ir -} - -struct CStringData { - void* data() throw(); -}; - -void test_CStringData() { - CStringData d = source(); - sink(d.data()); // $ ir -} - -template -struct CStrBufT { - typedef CSimpleStringT StringType; - - using PCXSTR = typename StringType::PCXSTR; - using PXSTR = typename StringType::PXSTR; - - CStrBufT(StringType& str, int nMinLength, DWORD dwFlags); - CStrBufT(StringType& str); - - operator PCXSTR() const throw(); - operator PXSTR() throw(); -}; - -void test_CStrBufT() { - CStringT s = source>(); - CStrBufT b(s, 42, 0); - sink(static_cast::PCXSTR>(b)); // $ ir - sink(static_cast::PXSTR>(b)); // $ ir } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index ed09207adf0..24f651ca389 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -140,1144 +140,1144 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | arrayassignment.cpp:145:12:145:12 | 5 | arrayassignment.cpp:145:7:145:13 | access to array | TAINT | | arrayassignment.cpp:146:7:146:10 | arr3 | arrayassignment.cpp:146:7:146:13 | access to array | | | arrayassignment.cpp:146:12:146:12 | 5 | arrayassignment.cpp:146:7:146:13 | access to array | TAINT | -| atl.cpp:34:30:34:30 | 1 | atl.cpp:34:29:34:30 | - ... | TAINT | -| atl.cpp:78:14:78:25 | call to source | atl.cpp:79:21:79:21 | x | | -| atl.cpp:79:21:79:21 | x | atl.cpp:79:21:79:22 | call to _U_STRINGorID | TAINT | -| atl.cpp:79:21:79:22 | call to _U_STRINGorID | atl.cpp:80:10:80:10 | u | | -| atl.cpp:84:17:84:43 | call to indirect_source | atl.cpp:85:21:85:21 | y | | -| atl.cpp:85:21:85:21 | y | atl.cpp:85:21:85:22 | call to _U_STRINGorID | TAINT | -| atl.cpp:85:21:85:22 | call to _U_STRINGorID | atl.cpp:86:10:86:10 | u | | -| atl.cpp:105:15:105:35 | call to indirect_source | atl.cpp:106:19:106:19 | x | | -| atl.cpp:106:19:106:19 | x | atl.cpp:106:19:106:20 | call to CA2AEX | TAINT | -| atl.cpp:106:19:106:20 | call to CA2AEX | atl.cpp:107:29:107:29 | a | | -| atl.cpp:106:19:106:20 | call to CA2AEX | atl.cpp:108:10:108:10 | a | | -| atl.cpp:106:19:106:20 | call to CA2AEX | atl.cpp:109:10:109:10 | a | | -| atl.cpp:106:19:106:20 | call to CA2AEX | atl.cpp:110:3:110:3 | a | | -| atl.cpp:107:29:107:29 | ref arg a | atl.cpp:108:10:108:10 | a | | -| atl.cpp:107:29:107:29 | ref arg a | atl.cpp:109:10:109:10 | a | | -| atl.cpp:107:29:107:29 | ref arg a | atl.cpp:110:3:110:3 | a | | -| atl.cpp:108:10:108:10 | a [post update] | atl.cpp:109:10:109:10 | a | | -| atl.cpp:108:10:108:10 | a [post update] | atl.cpp:110:3:110:3 | a | | -| atl.cpp:109:10:109:10 | a [post update] | atl.cpp:110:3:110:3 | a | | -| atl.cpp:113:15:113:35 | call to indirect_source | atl.cpp:114:19:114:19 | x | | -| atl.cpp:114:19:114:23 | call to CA2AEX | atl.cpp:115:29:115:29 | a | | -| atl.cpp:114:19:114:23 | call to CA2AEX | atl.cpp:116:10:116:10 | a | | -| atl.cpp:114:19:114:23 | call to CA2AEX | atl.cpp:117:10:117:10 | a | | -| atl.cpp:114:19:114:23 | call to CA2AEX | atl.cpp:118:3:118:3 | a | | -| atl.cpp:115:29:115:29 | ref arg a | atl.cpp:116:10:116:10 | a | | -| atl.cpp:115:29:115:29 | ref arg a | atl.cpp:117:10:117:10 | a | | -| atl.cpp:115:29:115:29 | ref arg a | atl.cpp:118:3:118:3 | a | | -| atl.cpp:116:10:116:10 | a [post update] | atl.cpp:117:10:117:10 | a | | -| atl.cpp:116:10:116:10 | a [post update] | atl.cpp:118:3:118:3 | a | | -| atl.cpp:117:10:117:10 | a [post update] | atl.cpp:118:3:118:3 | a | | -| atl.cpp:131:14:131:34 | call to indirect_source | atl.cpp:133:20:133:20 | x | | -| atl.cpp:131:14:131:34 | call to indirect_source | atl.cpp:139:20:139:20 | x | | -| atl.cpp:133:20:133:20 | x | atl.cpp:133:20:133:21 | call to CA2CAEX | TAINT | -| atl.cpp:133:20:133:21 | call to CA2CAEX | atl.cpp:134:30:134:30 | a | | -| atl.cpp:133:20:133:21 | call to CA2CAEX | atl.cpp:135:10:135:10 | a | | -| atl.cpp:133:20:133:21 | call to CA2CAEX | atl.cpp:136:10:136:10 | a | | -| atl.cpp:133:20:133:21 | call to CA2CAEX | atl.cpp:137:3:137:3 | a | | -| atl.cpp:139:20:139:24 | call to CA2CAEX | atl.cpp:140:30:140:30 | a | | -| atl.cpp:139:20:139:24 | call to CA2CAEX | atl.cpp:141:10:141:10 | a | | -| atl.cpp:139:20:139:24 | call to CA2CAEX | atl.cpp:142:10:142:10 | a | | -| atl.cpp:139:20:139:24 | call to CA2CAEX | atl.cpp:143:3:143:3 | a | | -| atl.cpp:157:14:157:34 | call to indirect_source | atl.cpp:159:19:159:19 | x | | -| atl.cpp:157:14:157:34 | call to indirect_source | atl.cpp:165:19:165:19 | x | | -| atl.cpp:159:19:159:19 | x | atl.cpp:159:19:159:20 | call to CA2WEX | TAINT | -| atl.cpp:159:19:159:20 | call to CA2WEX | atl.cpp:160:30:160:30 | a | | -| atl.cpp:159:19:159:20 | call to CA2WEX | atl.cpp:161:10:161:10 | a | | -| atl.cpp:159:19:159:20 | call to CA2WEX | atl.cpp:162:10:162:10 | a | | -| atl.cpp:159:19:159:20 | call to CA2WEX | atl.cpp:163:3:163:3 | a | | -| atl.cpp:160:30:160:30 | ref arg a | atl.cpp:161:10:161:10 | a | | -| atl.cpp:160:30:160:30 | ref arg a | atl.cpp:162:10:162:10 | a | | -| atl.cpp:160:30:160:30 | ref arg a | atl.cpp:163:3:163:3 | a | | -| atl.cpp:161:10:161:10 | a [post update] | atl.cpp:162:10:162:10 | a | | -| atl.cpp:161:10:161:10 | a [post update] | atl.cpp:163:3:163:3 | a | | -| atl.cpp:161:12:161:16 | ref arg m_psz | atl.cpp:162:12:162:16 | m_psz | | -| atl.cpp:162:10:162:10 | a [post update] | atl.cpp:163:3:163:3 | a | | -| atl.cpp:165:19:165:23 | call to CA2WEX | atl.cpp:166:30:166:30 | a | | -| atl.cpp:165:19:165:23 | call to CA2WEX | atl.cpp:167:10:167:10 | a | | -| atl.cpp:165:19:165:23 | call to CA2WEX | atl.cpp:168:10:168:10 | a | | -| atl.cpp:165:19:165:23 | call to CA2WEX | atl.cpp:169:3:169:3 | a | | -| atl.cpp:166:30:166:30 | ref arg a | atl.cpp:167:10:167:10 | a | | -| atl.cpp:166:30:166:30 | ref arg a | atl.cpp:168:10:168:10 | a | | -| atl.cpp:166:30:166:30 | ref arg a | atl.cpp:169:3:169:3 | a | | -| atl.cpp:167:10:167:10 | a [post update] | atl.cpp:168:10:168:10 | a | | -| atl.cpp:167:10:167:10 | a [post update] | atl.cpp:169:3:169:3 | a | | -| atl.cpp:167:12:167:16 | ref arg m_psz | atl.cpp:168:12:168:16 | m_psz | | -| atl.cpp:168:10:168:10 | a [post update] | atl.cpp:169:3:169:3 | a | | -| atl.cpp:217:11:217:21 | call to source | atl.cpp:221:11:221:11 | x | | -| atl.cpp:220:20:220:20 | call to CAtlArray | atl.cpp:221:5:221:5 | a | | -| atl.cpp:220:20:220:20 | call to CAtlArray | atl.cpp:222:10:222:10 | a | | -| atl.cpp:220:20:220:20 | call to CAtlArray | atl.cpp:223:5:223:5 | a | | -| atl.cpp:220:20:220:20 | call to CAtlArray | atl.cpp:224:10:224:10 | a | | -| atl.cpp:220:20:220:20 | call to CAtlArray | atl.cpp:228:15:228:15 | a | | -| atl.cpp:220:20:220:20 | call to CAtlArray | atl.cpp:243:3:243:3 | a | | -| atl.cpp:221:5:221:5 | ref arg a | atl.cpp:222:10:222:10 | a | | -| atl.cpp:221:5:221:5 | ref arg a | atl.cpp:223:5:223:5 | a | | -| atl.cpp:221:5:221:5 | ref arg a | atl.cpp:224:10:224:10 | a | | -| atl.cpp:221:5:221:5 | ref arg a | atl.cpp:228:15:228:15 | a | | -| atl.cpp:221:5:221:5 | ref arg a | atl.cpp:243:3:243:3 | a | | -| atl.cpp:222:10:222:10 | ref arg a | atl.cpp:223:5:223:5 | a | | -| atl.cpp:222:10:222:10 | ref arg a | atl.cpp:224:10:224:10 | a | | -| atl.cpp:222:10:222:10 | ref arg a | atl.cpp:228:15:228:15 | a | | -| atl.cpp:222:10:222:10 | ref arg a | atl.cpp:243:3:243:3 | a | | -| atl.cpp:223:5:223:5 | ref arg a | atl.cpp:224:10:224:10 | a | | -| atl.cpp:223:5:223:5 | ref arg a | atl.cpp:228:15:228:15 | a | | -| atl.cpp:223:5:223:5 | ref arg a | atl.cpp:243:3:243:3 | a | | -| atl.cpp:224:10:224:10 | ref arg a | atl.cpp:228:15:228:15 | a | | -| atl.cpp:224:10:224:10 | ref arg a | atl.cpp:243:3:243:3 | a | | -| atl.cpp:226:20:226:21 | call to CAtlArray | atl.cpp:227:10:227:11 | a2 | | -| atl.cpp:226:20:226:21 | call to CAtlArray | atl.cpp:228:5:228:6 | a2 | | -| atl.cpp:226:20:226:21 | call to CAtlArray | atl.cpp:229:10:229:11 | a2 | | -| atl.cpp:226:20:226:21 | call to CAtlArray | atl.cpp:233:13:233:14 | a2 | | -| atl.cpp:226:20:226:21 | call to CAtlArray | atl.cpp:243:3:243:3 | a2 | | -| atl.cpp:227:10:227:11 | ref arg a2 | atl.cpp:228:5:228:6 | a2 | | -| atl.cpp:227:10:227:11 | ref arg a2 | atl.cpp:229:10:229:11 | a2 | | -| atl.cpp:227:10:227:11 | ref arg a2 | atl.cpp:233:13:233:14 | a2 | | -| atl.cpp:227:10:227:11 | ref arg a2 | atl.cpp:243:3:243:3 | a2 | | -| atl.cpp:228:5:228:6 | ref arg a2 | atl.cpp:229:10:229:11 | a2 | | -| atl.cpp:228:5:228:6 | ref arg a2 | atl.cpp:233:13:233:14 | a2 | | -| atl.cpp:228:5:228:6 | ref arg a2 | atl.cpp:243:3:243:3 | a2 | | -| atl.cpp:229:10:229:11 | ref arg a2 | atl.cpp:233:13:233:14 | a2 | | -| atl.cpp:229:10:229:11 | ref arg a2 | atl.cpp:243:3:243:3 | a2 | | -| atl.cpp:231:20:231:21 | call to CAtlArray | atl.cpp:232:10:232:11 | a3 | | -| atl.cpp:231:20:231:21 | call to CAtlArray | atl.cpp:233:5:233:6 | a3 | | -| atl.cpp:231:20:231:21 | call to CAtlArray | atl.cpp:234:10:234:11 | a3 | | -| atl.cpp:231:20:231:21 | call to CAtlArray | atl.cpp:236:10:236:11 | a3 | | -| atl.cpp:231:20:231:21 | call to CAtlArray | atl.cpp:237:11:237:12 | a3 | | -| atl.cpp:231:20:231:21 | call to CAtlArray | atl.cpp:241:26:241:27 | a3 | | -| atl.cpp:231:20:231:21 | call to CAtlArray | atl.cpp:243:3:243:3 | a3 | | -| atl.cpp:232:10:232:11 | ref arg a3 | atl.cpp:233:5:233:6 | a3 | | -| atl.cpp:232:10:232:11 | ref arg a3 | atl.cpp:234:10:234:11 | a3 | | -| atl.cpp:232:10:232:11 | ref arg a3 | atl.cpp:236:10:236:11 | a3 | | -| atl.cpp:232:10:232:11 | ref arg a3 | atl.cpp:237:11:237:12 | a3 | | -| atl.cpp:232:10:232:11 | ref arg a3 | atl.cpp:241:26:241:27 | a3 | | -| atl.cpp:232:10:232:11 | ref arg a3 | atl.cpp:243:3:243:3 | a3 | | -| atl.cpp:233:5:233:6 | ref arg a3 | atl.cpp:234:10:234:11 | a3 | | -| atl.cpp:233:5:233:6 | ref arg a3 | atl.cpp:236:10:236:11 | a3 | | -| atl.cpp:233:5:233:6 | ref arg a3 | atl.cpp:237:11:237:12 | a3 | | -| atl.cpp:233:5:233:6 | ref arg a3 | atl.cpp:241:26:241:27 | a3 | | -| atl.cpp:233:5:233:6 | ref arg a3 | atl.cpp:243:3:243:3 | a3 | | -| atl.cpp:234:10:234:11 | ref arg a3 | atl.cpp:236:10:236:11 | a3 | | -| atl.cpp:234:10:234:11 | ref arg a3 | atl.cpp:237:11:237:12 | a3 | | -| atl.cpp:234:10:234:11 | ref arg a3 | atl.cpp:241:26:241:27 | a3 | | -| atl.cpp:234:10:234:11 | ref arg a3 | atl.cpp:243:3:243:3 | a3 | | -| atl.cpp:236:10:236:11 | ref arg a3 | atl.cpp:237:11:237:12 | a3 | | -| atl.cpp:236:10:236:11 | ref arg a3 | atl.cpp:241:26:241:27 | a3 | | -| atl.cpp:236:10:236:11 | ref arg a3 | atl.cpp:243:3:243:3 | a3 | | -| atl.cpp:237:11:237:12 | ref arg a3 | atl.cpp:241:26:241:27 | a3 | | -| atl.cpp:237:11:237:12 | ref arg a3 | atl.cpp:243:3:243:3 | a3 | | -| atl.cpp:237:14:237:20 | call to GetData | atl.cpp:237:10:237:22 | * ... | TAINT | -| atl.cpp:239:20:239:21 | call to CAtlArray | atl.cpp:240:10:240:11 | a4 | | -| atl.cpp:239:20:239:21 | call to CAtlArray | atl.cpp:241:5:241:6 | a4 | | -| atl.cpp:239:20:239:21 | call to CAtlArray | atl.cpp:242:10:242:11 | a4 | | -| atl.cpp:239:20:239:21 | call to CAtlArray | atl.cpp:243:3:243:3 | a4 | | -| atl.cpp:240:10:240:11 | ref arg a4 | atl.cpp:241:5:241:6 | a4 | | -| atl.cpp:240:10:240:11 | ref arg a4 | atl.cpp:242:10:242:11 | a4 | | -| atl.cpp:240:10:240:11 | ref arg a4 | atl.cpp:243:3:243:3 | a4 | | -| atl.cpp:241:5:241:6 | ref arg a4 | atl.cpp:242:10:242:11 | a4 | | -| atl.cpp:241:5:241:6 | ref arg a4 | atl.cpp:243:3:243:3 | a4 | | -| atl.cpp:241:26:241:27 | a3 | atl.cpp:241:25:241:27 | & ... | | -| atl.cpp:242:10:242:11 | ref arg a4 | atl.cpp:243:3:243:3 | a4 | | -| atl.cpp:245:20:245:21 | call to CAtlArray | atl.cpp:246:5:246:6 | a5 | | -| atl.cpp:245:20:245:21 | call to CAtlArray | atl.cpp:247:10:247:11 | a5 | | -| atl.cpp:245:20:245:21 | call to CAtlArray | atl.cpp:252:3:252:3 | a5 | | -| atl.cpp:246:5:246:6 | ref arg a5 | atl.cpp:247:10:247:11 | a5 | | -| atl.cpp:246:5:246:6 | ref arg a5 | atl.cpp:252:3:252:3 | a5 | | -| atl.cpp:247:10:247:11 | ref arg a5 | atl.cpp:252:3:252:3 | a5 | | -| atl.cpp:249:20:249:21 | call to CAtlArray | atl.cpp:250:5:250:6 | a6 | | -| atl.cpp:249:20:249:21 | call to CAtlArray | atl.cpp:251:10:251:11 | a6 | | -| atl.cpp:249:20:249:21 | call to CAtlArray | atl.cpp:252:3:252:3 | a6 | | -| atl.cpp:250:5:250:6 | ref arg a6 | atl.cpp:251:10:251:11 | a6 | | -| atl.cpp:250:5:250:6 | ref arg a6 | atl.cpp:252:3:252:3 | a6 | | -| atl.cpp:251:10:251:11 | ref arg a6 | atl.cpp:252:3:252:3 | a6 | | -| atl.cpp:297:11:297:21 | call to source | atl.cpp:301:18:301:18 | x | | -| atl.cpp:297:11:297:21 | call to source | atl.cpp:309:19:309:19 | x | | -| atl.cpp:297:11:297:21 | call to source | atl.cpp:318:29:318:29 | x | | -| atl.cpp:297:11:297:21 | call to source | atl.cpp:324:21:324:21 | x | | -| atl.cpp:297:11:297:21 | call to source | atl.cpp:332:30:332:30 | x | | -| atl.cpp:297:11:297:21 | call to source | atl.cpp:339:31:339:31 | x | | -| atl.cpp:297:11:297:21 | call to source | atl.cpp:344:44:344:44 | x | | -| atl.cpp:299:24:299:25 | 10 | atl.cpp:299:24:299:26 | call to CAtlList | TAINT | -| atl.cpp:299:24:299:26 | call to CAtlList | atl.cpp:300:10:300:13 | list | | -| atl.cpp:299:24:299:26 | call to CAtlList | atl.cpp:301:5:301:8 | list | | -| atl.cpp:299:24:299:26 | call to CAtlList | atl.cpp:302:10:302:13 | list | | -| atl.cpp:299:24:299:26 | call to CAtlList | atl.cpp:305:24:305:27 | list | | -| atl.cpp:299:24:299:26 | call to CAtlList | atl.cpp:347:3:347:3 | list | | -| atl.cpp:300:10:300:13 | ref arg list | atl.cpp:301:5:301:8 | list | | -| atl.cpp:300:10:300:13 | ref arg list | atl.cpp:302:10:302:13 | list | | -| atl.cpp:300:10:300:13 | ref arg list | atl.cpp:305:24:305:27 | list | | -| atl.cpp:300:10:300:13 | ref arg list | atl.cpp:347:3:347:3 | list | | -| atl.cpp:301:5:301:8 | ref arg list | atl.cpp:302:10:302:13 | list | | -| atl.cpp:301:5:301:8 | ref arg list | atl.cpp:305:24:305:27 | list | | -| atl.cpp:301:5:301:8 | ref arg list | atl.cpp:347:3:347:3 | list | | -| atl.cpp:302:10:302:13 | ref arg list | atl.cpp:305:24:305:27 | list | | -| atl.cpp:302:10:302:13 | ref arg list | atl.cpp:347:3:347:3 | list | | -| atl.cpp:304:25:304:26 | 10 | atl.cpp:304:25:304:27 | call to CAtlList | TAINT | -| atl.cpp:304:25:304:27 | call to CAtlList | atl.cpp:305:5:305:9 | list2 | | -| atl.cpp:304:25:304:27 | call to CAtlList | atl.cpp:306:10:306:14 | list2 | | -| atl.cpp:304:25:304:27 | call to CAtlList | atl.cpp:347:3:347:3 | list2 | | -| atl.cpp:305:5:305:9 | ref arg list2 | atl.cpp:306:10:306:14 | list2 | | -| atl.cpp:305:5:305:9 | ref arg list2 | atl.cpp:347:3:347:3 | list2 | | -| atl.cpp:305:24:305:27 | list | atl.cpp:305:23:305:27 | & ... | | -| atl.cpp:306:10:306:14 | ref arg list2 | atl.cpp:347:3:347:3 | list2 | | -| atl.cpp:308:25:308:26 | 10 | atl.cpp:308:25:308:27 | call to CAtlList | TAINT | -| atl.cpp:308:25:308:27 | call to CAtlList | atl.cpp:309:5:309:9 | list3 | | -| atl.cpp:308:25:308:27 | call to CAtlList | atl.cpp:310:10:310:14 | list3 | | -| atl.cpp:308:25:308:27 | call to CAtlList | atl.cpp:313:24:313:28 | list3 | | -| atl.cpp:308:25:308:27 | call to CAtlList | atl.cpp:347:3:347:3 | list3 | | -| atl.cpp:309:5:309:9 | ref arg list3 | atl.cpp:310:10:310:14 | list3 | | -| atl.cpp:309:5:309:9 | ref arg list3 | atl.cpp:313:24:313:28 | list3 | | -| atl.cpp:309:5:309:9 | ref arg list3 | atl.cpp:347:3:347:3 | list3 | | -| atl.cpp:310:10:310:14 | ref arg list3 | atl.cpp:313:24:313:28 | list3 | | -| atl.cpp:310:10:310:14 | ref arg list3 | atl.cpp:347:3:347:3 | list3 | | -| atl.cpp:312:25:312:26 | 10 | atl.cpp:312:25:312:27 | call to CAtlList | TAINT | -| atl.cpp:312:25:312:27 | call to CAtlList | atl.cpp:313:5:313:9 | list4 | | -| atl.cpp:312:25:312:27 | call to CAtlList | atl.cpp:314:10:314:14 | list4 | | -| atl.cpp:312:25:312:27 | call to CAtlList | atl.cpp:347:3:347:3 | list4 | | -| atl.cpp:313:5:313:9 | ref arg list4 | atl.cpp:314:10:314:14 | list4 | | -| atl.cpp:313:5:313:9 | ref arg list4 | atl.cpp:347:3:347:3 | list4 | | -| atl.cpp:313:24:313:28 | list3 | atl.cpp:313:23:313:28 | & ... | | -| atl.cpp:314:10:314:14 | ref arg list4 | atl.cpp:347:3:347:3 | list4 | | -| atl.cpp:317:27:317:28 | 10 | atl.cpp:317:27:317:29 | call to CAtlList | TAINT | -| atl.cpp:317:27:317:29 | call to CAtlList | atl.cpp:318:18:318:22 | list5 | | -| atl.cpp:317:27:317:29 | call to CAtlList | atl.cpp:318:32:318:36 | list5 | | -| atl.cpp:317:27:317:29 | call to CAtlList | atl.cpp:319:12:319:16 | list5 | | -| atl.cpp:317:27:317:29 | call to CAtlList | atl.cpp:320:5:320:5 | list5 | | -| atl.cpp:318:18:318:22 | ref arg list5 | atl.cpp:319:12:319:16 | list5 | | -| atl.cpp:318:18:318:22 | ref arg list5 | atl.cpp:320:5:320:5 | list5 | | -| atl.cpp:318:24:318:27 | call to Find | atl.cpp:319:24:319:26 | pos | | -| atl.cpp:318:32:318:36 | ref arg list5 | atl.cpp:318:18:318:22 | list5 | | -| atl.cpp:318:32:318:36 | ref arg list5 | atl.cpp:319:12:319:16 | list5 | | -| atl.cpp:318:32:318:36 | ref arg list5 | atl.cpp:320:5:320:5 | list5 | | -| atl.cpp:319:12:319:16 | ref arg list5 | atl.cpp:320:5:320:5 | list5 | | -| atl.cpp:323:27:323:28 | 10 | atl.cpp:323:27:323:29 | call to CAtlList | TAINT | -| atl.cpp:323:27:323:29 | call to CAtlList | atl.cpp:324:7:324:11 | list6 | | -| atl.cpp:323:27:323:29 | call to CAtlList | atl.cpp:325:18:325:22 | list6 | | -| atl.cpp:323:27:323:29 | call to CAtlList | atl.cpp:326:12:326:16 | list6 | | -| atl.cpp:323:27:323:29 | call to CAtlList | atl.cpp:327:5:327:5 | list6 | | -| atl.cpp:324:7:324:11 | ref arg list6 | atl.cpp:325:18:325:22 | list6 | | -| atl.cpp:324:7:324:11 | ref arg list6 | atl.cpp:326:12:326:16 | list6 | | -| atl.cpp:324:7:324:11 | ref arg list6 | atl.cpp:327:5:327:5 | list6 | | -| atl.cpp:325:18:325:22 | ref arg list6 | atl.cpp:326:12:326:16 | list6 | | -| atl.cpp:325:18:325:22 | ref arg list6 | atl.cpp:327:5:327:5 | list6 | | -| atl.cpp:325:24:325:32 | call to FindIndex | atl.cpp:326:24:326:26 | pos | | -| atl.cpp:326:12:326:16 | ref arg list6 | atl.cpp:327:5:327:5 | list6 | | -| atl.cpp:330:27:330:28 | 10 | atl.cpp:330:27:330:29 | call to CAtlList | TAINT | -| atl.cpp:330:27:330:29 | call to CAtlList | atl.cpp:331:18:331:22 | list7 | | -| atl.cpp:330:27:330:29 | call to CAtlList | atl.cpp:332:7:332:11 | list7 | | -| atl.cpp:330:27:330:29 | call to CAtlList | atl.cpp:333:12:333:16 | list7 | | -| atl.cpp:330:27:330:29 | call to CAtlList | atl.cpp:334:5:334:5 | list7 | | -| atl.cpp:331:18:331:22 | ref arg list7 | atl.cpp:332:7:332:11 | list7 | | -| atl.cpp:331:18:331:22 | ref arg list7 | atl.cpp:333:12:333:16 | list7 | | -| atl.cpp:331:18:331:22 | ref arg list7 | atl.cpp:334:5:334:5 | list7 | | -| atl.cpp:331:24:331:38 | call to GetTailPosition | atl.cpp:332:25:332:27 | pos | | -| atl.cpp:332:7:332:11 | ref arg list7 | atl.cpp:333:12:333:16 | list7 | | -| atl.cpp:332:7:332:11 | ref arg list7 | atl.cpp:334:5:334:5 | list7 | | -| atl.cpp:333:12:333:16 | ref arg list7 | atl.cpp:334:5:334:5 | list7 | | -| atl.cpp:337:27:337:28 | 10 | atl.cpp:337:27:337:29 | call to CAtlList | TAINT | -| atl.cpp:337:27:337:29 | call to CAtlList | atl.cpp:338:18:338:22 | list8 | | -| atl.cpp:337:27:337:29 | call to CAtlList | atl.cpp:339:7:339:11 | list8 | | -| atl.cpp:337:27:337:29 | call to CAtlList | atl.cpp:340:12:340:16 | list8 | | -| atl.cpp:337:27:337:29 | call to CAtlList | atl.cpp:341:5:341:5 | list8 | | -| atl.cpp:338:18:338:22 | ref arg list8 | atl.cpp:339:7:339:11 | list8 | | -| atl.cpp:338:18:338:22 | ref arg list8 | atl.cpp:340:12:340:16 | list8 | | -| atl.cpp:338:18:338:22 | ref arg list8 | atl.cpp:341:5:341:5 | list8 | | -| atl.cpp:338:24:338:38 | call to GetTailPosition | atl.cpp:339:26:339:28 | pos | | -| atl.cpp:339:7:339:11 | ref arg list8 | atl.cpp:340:12:340:16 | list8 | | -| atl.cpp:339:7:339:11 | ref arg list8 | atl.cpp:341:5:341:5 | list8 | | -| atl.cpp:340:12:340:16 | ref arg list8 | atl.cpp:341:5:341:5 | list8 | | -| atl.cpp:343:27:343:28 | 10 | atl.cpp:343:27:343:29 | call to CAtlList | TAINT | -| atl.cpp:343:27:343:29 | call to CAtlList | atl.cpp:344:7:344:11 | list9 | | -| atl.cpp:343:27:343:29 | call to CAtlList | atl.cpp:344:19:344:23 | list9 | | -| atl.cpp:343:27:343:29 | call to CAtlList | atl.cpp:345:12:345:16 | list9 | | -| atl.cpp:343:27:343:29 | call to CAtlList | atl.cpp:346:5:346:5 | list9 | | -| atl.cpp:344:7:344:11 | ref arg list9 | atl.cpp:345:12:345:16 | list9 | | -| atl.cpp:344:7:344:11 | ref arg list9 | atl.cpp:346:5:346:5 | list9 | | -| atl.cpp:344:19:344:23 | ref arg list9 | atl.cpp:344:7:344:11 | list9 | | -| atl.cpp:344:19:344:23 | ref arg list9 | atl.cpp:345:12:345:16 | list9 | | -| atl.cpp:344:19:344:23 | ref arg list9 | atl.cpp:346:5:346:5 | list9 | | -| atl.cpp:345:12:345:16 | ref arg list9 | atl.cpp:346:5:346:5 | list9 | | -| atl.cpp:349:12:349:31 | call to indirect_source | atl.cpp:353:18:353:18 | p | | -| atl.cpp:349:12:349:31 | call to indirect_source | atl.cpp:361:19:361:19 | p | | -| atl.cpp:349:12:349:31 | call to indirect_source | atl.cpp:370:29:370:29 | p | | -| atl.cpp:349:12:349:31 | call to indirect_source | atl.cpp:376:21:376:21 | p | | -| atl.cpp:349:12:349:31 | call to indirect_source | atl.cpp:384:30:384:30 | p | | -| atl.cpp:349:12:349:31 | call to indirect_source | atl.cpp:391:31:391:31 | p | | -| atl.cpp:349:12:349:31 | call to indirect_source | atl.cpp:396:44:396:44 | p | | -| atl.cpp:351:25:351:26 | 10 | atl.cpp:351:25:351:27 | call to CAtlList | TAINT | -| atl.cpp:351:25:351:27 | call to CAtlList | atl.cpp:352:10:352:13 | list | | -| atl.cpp:351:25:351:27 | call to CAtlList | atl.cpp:353:5:353:8 | list | | -| atl.cpp:351:25:351:27 | call to CAtlList | atl.cpp:354:10:354:13 | list | | -| atl.cpp:351:25:351:27 | call to CAtlList | atl.cpp:357:24:357:27 | list | | -| atl.cpp:351:25:351:27 | call to CAtlList | atl.cpp:399:3:399:3 | list | | -| atl.cpp:352:10:352:13 | ref arg list | atl.cpp:353:5:353:8 | list | | -| atl.cpp:352:10:352:13 | ref arg list | atl.cpp:354:10:354:13 | list | | -| atl.cpp:352:10:352:13 | ref arg list | atl.cpp:357:24:357:27 | list | | -| atl.cpp:352:10:352:13 | ref arg list | atl.cpp:399:3:399:3 | list | | -| atl.cpp:353:5:353:8 | ref arg list | atl.cpp:354:10:354:13 | list | | -| atl.cpp:353:5:353:8 | ref arg list | atl.cpp:357:24:357:27 | list | | -| atl.cpp:353:5:353:8 | ref arg list | atl.cpp:399:3:399:3 | list | | -| atl.cpp:354:10:354:13 | ref arg list | atl.cpp:357:24:357:27 | list | | -| atl.cpp:354:10:354:13 | ref arg list | atl.cpp:399:3:399:3 | list | | -| atl.cpp:356:26:356:27 | 10 | atl.cpp:356:26:356:28 | call to CAtlList | TAINT | -| atl.cpp:356:26:356:28 | call to CAtlList | atl.cpp:357:5:357:9 | list2 | | -| atl.cpp:356:26:356:28 | call to CAtlList | atl.cpp:358:10:358:14 | list2 | | -| atl.cpp:356:26:356:28 | call to CAtlList | atl.cpp:399:3:399:3 | list2 | | -| atl.cpp:357:5:357:9 | ref arg list2 | atl.cpp:358:10:358:14 | list2 | | -| atl.cpp:357:5:357:9 | ref arg list2 | atl.cpp:399:3:399:3 | list2 | | -| atl.cpp:357:24:357:27 | list | atl.cpp:357:23:357:27 | & ... | | -| atl.cpp:358:10:358:14 | ref arg list2 | atl.cpp:399:3:399:3 | list2 | | -| atl.cpp:360:26:360:27 | 10 | atl.cpp:360:26:360:28 | call to CAtlList | TAINT | -| atl.cpp:360:26:360:28 | call to CAtlList | atl.cpp:361:5:361:9 | list3 | | -| atl.cpp:360:26:360:28 | call to CAtlList | atl.cpp:362:10:362:14 | list3 | | -| atl.cpp:360:26:360:28 | call to CAtlList | atl.cpp:365:24:365:28 | list3 | | -| atl.cpp:360:26:360:28 | call to CAtlList | atl.cpp:399:3:399:3 | list3 | | -| atl.cpp:361:5:361:9 | ref arg list3 | atl.cpp:362:10:362:14 | list3 | | -| atl.cpp:361:5:361:9 | ref arg list3 | atl.cpp:365:24:365:28 | list3 | | -| atl.cpp:361:5:361:9 | ref arg list3 | atl.cpp:399:3:399:3 | list3 | | -| atl.cpp:362:10:362:14 | ref arg list3 | atl.cpp:365:24:365:28 | list3 | | -| atl.cpp:362:10:362:14 | ref arg list3 | atl.cpp:399:3:399:3 | list3 | | -| atl.cpp:364:26:364:27 | 10 | atl.cpp:364:26:364:28 | call to CAtlList | TAINT | -| atl.cpp:364:26:364:28 | call to CAtlList | atl.cpp:365:5:365:9 | list4 | | -| atl.cpp:364:26:364:28 | call to CAtlList | atl.cpp:366:10:366:14 | list4 | | -| atl.cpp:364:26:364:28 | call to CAtlList | atl.cpp:399:3:399:3 | list4 | | -| atl.cpp:365:5:365:9 | ref arg list4 | atl.cpp:366:10:366:14 | list4 | | -| atl.cpp:365:5:365:9 | ref arg list4 | atl.cpp:399:3:399:3 | list4 | | -| atl.cpp:365:24:365:28 | list3 | atl.cpp:365:23:365:28 | & ... | | -| atl.cpp:366:10:366:14 | ref arg list4 | atl.cpp:399:3:399:3 | list4 | | -| atl.cpp:369:28:369:29 | 10 | atl.cpp:369:28:369:30 | call to CAtlList | TAINT | -| atl.cpp:369:28:369:30 | call to CAtlList | atl.cpp:370:18:370:22 | list5 | | -| atl.cpp:369:28:369:30 | call to CAtlList | atl.cpp:370:32:370:36 | list5 | | -| atl.cpp:369:28:369:30 | call to CAtlList | atl.cpp:371:12:371:16 | list5 | | -| atl.cpp:369:28:369:30 | call to CAtlList | atl.cpp:372:5:372:5 | list5 | | -| atl.cpp:370:18:370:22 | ref arg list5 | atl.cpp:371:12:371:16 | list5 | | -| atl.cpp:370:18:370:22 | ref arg list5 | atl.cpp:372:5:372:5 | list5 | | -| atl.cpp:370:24:370:27 | call to Find | atl.cpp:371:24:371:26 | pos | | -| atl.cpp:370:32:370:36 | ref arg list5 | atl.cpp:370:18:370:22 | list5 | | -| atl.cpp:370:32:370:36 | ref arg list5 | atl.cpp:371:12:371:16 | list5 | | -| atl.cpp:370:32:370:36 | ref arg list5 | atl.cpp:372:5:372:5 | list5 | | -| atl.cpp:371:12:371:16 | ref arg list5 | atl.cpp:372:5:372:5 | list5 | | -| atl.cpp:375:28:375:29 | 10 | atl.cpp:375:28:375:30 | call to CAtlList | TAINT | -| atl.cpp:375:28:375:30 | call to CAtlList | atl.cpp:376:7:376:11 | list6 | | -| atl.cpp:375:28:375:30 | call to CAtlList | atl.cpp:377:18:377:22 | list6 | | -| atl.cpp:375:28:375:30 | call to CAtlList | atl.cpp:378:12:378:16 | list6 | | -| atl.cpp:375:28:375:30 | call to CAtlList | atl.cpp:379:5:379:5 | list6 | | -| atl.cpp:376:7:376:11 | ref arg list6 | atl.cpp:377:18:377:22 | list6 | | -| atl.cpp:376:7:376:11 | ref arg list6 | atl.cpp:378:12:378:16 | list6 | | -| atl.cpp:376:7:376:11 | ref arg list6 | atl.cpp:379:5:379:5 | list6 | | -| atl.cpp:377:18:377:22 | ref arg list6 | atl.cpp:378:12:378:16 | list6 | | -| atl.cpp:377:18:377:22 | ref arg list6 | atl.cpp:379:5:379:5 | list6 | | -| atl.cpp:377:24:377:32 | call to FindIndex | atl.cpp:378:24:378:26 | pos | | -| atl.cpp:378:12:378:16 | ref arg list6 | atl.cpp:379:5:379:5 | list6 | | -| atl.cpp:382:28:382:29 | 10 | atl.cpp:382:28:382:30 | call to CAtlList | TAINT | -| atl.cpp:382:28:382:30 | call to CAtlList | atl.cpp:383:18:383:22 | list7 | | -| atl.cpp:382:28:382:30 | call to CAtlList | atl.cpp:384:7:384:11 | list7 | | -| atl.cpp:382:28:382:30 | call to CAtlList | atl.cpp:385:12:385:16 | list7 | | -| atl.cpp:382:28:382:30 | call to CAtlList | atl.cpp:386:5:386:5 | list7 | | -| atl.cpp:383:18:383:22 | ref arg list7 | atl.cpp:384:7:384:11 | list7 | | -| atl.cpp:383:18:383:22 | ref arg list7 | atl.cpp:385:12:385:16 | list7 | | -| atl.cpp:383:18:383:22 | ref arg list7 | atl.cpp:386:5:386:5 | list7 | | -| atl.cpp:383:24:383:38 | call to GetTailPosition | atl.cpp:384:25:384:27 | pos | | -| atl.cpp:384:7:384:11 | ref arg list7 | atl.cpp:385:12:385:16 | list7 | | -| atl.cpp:384:7:384:11 | ref arg list7 | atl.cpp:386:5:386:5 | list7 | | -| atl.cpp:385:12:385:16 | ref arg list7 | atl.cpp:386:5:386:5 | list7 | | -| atl.cpp:389:28:389:29 | 10 | atl.cpp:389:28:389:30 | call to CAtlList | TAINT | -| atl.cpp:389:28:389:30 | call to CAtlList | atl.cpp:390:18:390:22 | list8 | | -| atl.cpp:389:28:389:30 | call to CAtlList | atl.cpp:391:7:391:11 | list8 | | -| atl.cpp:389:28:389:30 | call to CAtlList | atl.cpp:392:12:392:16 | list8 | | -| atl.cpp:389:28:389:30 | call to CAtlList | atl.cpp:393:5:393:5 | list8 | | -| atl.cpp:390:18:390:22 | ref arg list8 | atl.cpp:391:7:391:11 | list8 | | -| atl.cpp:390:18:390:22 | ref arg list8 | atl.cpp:392:12:392:16 | list8 | | -| atl.cpp:390:18:390:22 | ref arg list8 | atl.cpp:393:5:393:5 | list8 | | -| atl.cpp:390:24:390:38 | call to GetTailPosition | atl.cpp:391:26:391:28 | pos | | -| atl.cpp:391:7:391:11 | ref arg list8 | atl.cpp:392:12:392:16 | list8 | | -| atl.cpp:391:7:391:11 | ref arg list8 | atl.cpp:393:5:393:5 | list8 | | -| atl.cpp:392:12:392:16 | ref arg list8 | atl.cpp:393:5:393:5 | list8 | | -| atl.cpp:395:28:395:29 | 10 | atl.cpp:395:28:395:30 | call to CAtlList | TAINT | -| atl.cpp:395:28:395:30 | call to CAtlList | atl.cpp:396:7:396:11 | list9 | | -| atl.cpp:395:28:395:30 | call to CAtlList | atl.cpp:396:19:396:23 | list9 | | -| atl.cpp:395:28:395:30 | call to CAtlList | atl.cpp:397:12:397:16 | list9 | | -| atl.cpp:395:28:395:30 | call to CAtlList | atl.cpp:398:5:398:5 | list9 | | -| atl.cpp:396:7:396:11 | ref arg list9 | atl.cpp:397:12:397:16 | list9 | | -| atl.cpp:396:7:396:11 | ref arg list9 | atl.cpp:398:5:398:5 | list9 | | -| atl.cpp:396:19:396:23 | ref arg list9 | atl.cpp:396:7:396:11 | list9 | | -| atl.cpp:396:19:396:23 | ref arg list9 | atl.cpp:397:12:397:16 | list9 | | -| atl.cpp:396:19:396:23 | ref arg list9 | atl.cpp:398:5:398:5 | list9 | | -| atl.cpp:397:12:397:16 | ref arg list9 | atl.cpp:398:5:398:5 | list9 | | -| atl.cpp:455:21:455:33 | new | atl.cpp:456:3:456:6 | safe | | -| atl.cpp:455:21:455:33 | new | atl.cpp:457:10:457:13 | safe | | -| atl.cpp:456:3:456:6 | safe [post update] | atl.cpp:457:10:457:13 | safe | | -| atl.cpp:456:3:456:40 | ... = ... | atl.cpp:456:9:456:14 | pvData [post update] | | -| atl.cpp:456:18:456:38 | call to indirect_source | atl.cpp:456:3:456:40 | ... = ... | | -| atl.cpp:461:13:461:33 | call to indirect_source | atl.cpp:463:16:463:16 | x | | -| atl.cpp:461:13:461:33 | call to indirect_source | atl.cpp:470:20:470:20 | x | | -| atl.cpp:461:13:461:33 | call to indirect_source | atl.cpp:474:16:474:16 | x | | -| atl.cpp:461:13:461:33 | call to indirect_source | atl.cpp:482:11:482:11 | x | | -| atl.cpp:461:13:461:33 | call to indirect_source | atl.cpp:496:20:496:20 | x | | -| atl.cpp:463:16:463:16 | x | atl.cpp:463:16:463:17 | call to CComBSTR | TAINT | -| atl.cpp:463:16:463:17 | call to CComBSTR | atl.cpp:464:10:464:10 | b | | -| atl.cpp:463:16:463:17 | call to CComBSTR | atl.cpp:466:17:466:17 | b | | -| atl.cpp:463:16:463:17 | call to CComBSTR | atl.cpp:468:3:468:3 | b | | -| atl.cpp:464:10:464:10 | b [post update] | atl.cpp:466:17:466:17 | b | | -| atl.cpp:464:10:464:10 | b [post update] | atl.cpp:468:3:468:3 | b | | -| atl.cpp:464:12:464:16 | ref arg m_str | atl.cpp:467:13:467:17 | m_str | | -| atl.cpp:466:17:466:17 | b | atl.cpp:466:17:466:18 | call to CComBSTR | | -| atl.cpp:466:17:466:18 | call to CComBSTR | atl.cpp:467:10:467:11 | b2 | | -| atl.cpp:466:17:466:18 | call to CComBSTR | atl.cpp:468:3:468:3 | b2 | | -| atl.cpp:467:10:467:11 | b2 [post update] | atl.cpp:468:3:468:3 | b2 | | -| atl.cpp:470:16:470:21 | call to CComBSTR | atl.cpp:471:10:471:10 | b | | -| atl.cpp:470:16:470:21 | call to CComBSTR | atl.cpp:472:3:472:3 | b | | -| atl.cpp:471:10:471:10 | b [post update] | atl.cpp:472:3:472:3 | b | | -| atl.cpp:474:16:474:16 | x | atl.cpp:474:16:474:17 | call to CComBSTR | TAINT | -| atl.cpp:474:16:474:17 | call to CComBSTR | atl.cpp:478:11:478:11 | b | | -| atl.cpp:474:16:474:17 | call to CComBSTR | atl.cpp:514:3:514:3 | b | | -| atl.cpp:476:14:476:15 | call to CComBSTR | atl.cpp:477:10:477:11 | b2 | | -| atl.cpp:476:14:476:15 | call to CComBSTR | atl.cpp:478:5:478:6 | b2 | | -| atl.cpp:476:14:476:15 | call to CComBSTR | atl.cpp:479:10:479:11 | b2 | | -| atl.cpp:476:14:476:15 | call to CComBSTR | atl.cpp:514:3:514:3 | b2 | | -| atl.cpp:477:10:477:11 | b2 [post update] | atl.cpp:478:5:478:6 | b2 | | -| atl.cpp:477:10:477:11 | b2 [post update] | atl.cpp:479:10:479:11 | b2 | | -| atl.cpp:477:10:477:11 | b2 [post update] | atl.cpp:514:3:514:3 | b2 | | -| atl.cpp:477:13:477:17 | ref arg m_str | atl.cpp:479:13:479:17 | m_str | | -| atl.cpp:478:5:478:6 | ref arg b2 | atl.cpp:479:10:479:11 | b2 | | -| atl.cpp:478:5:478:6 | ref arg b2 | atl.cpp:514:3:514:3 | b2 | | -| atl.cpp:479:10:479:11 | b2 [post update] | atl.cpp:514:3:514:3 | b2 | | -| atl.cpp:481:14:481:15 | call to CComBSTR | atl.cpp:482:5:482:6 | b3 | | -| atl.cpp:481:14:481:15 | call to CComBSTR | atl.cpp:483:10:483:11 | b3 | | -| atl.cpp:481:14:481:15 | call to CComBSTR | atl.cpp:484:28:484:29 | b3 | | -| atl.cpp:481:14:481:15 | call to CComBSTR | atl.cpp:485:13:485:14 | b3 | | -| atl.cpp:481:14:481:15 | call to CComBSTR | atl.cpp:514:3:514:3 | b3 | | -| atl.cpp:482:5:482:6 | ref arg b3 | atl.cpp:483:10:483:11 | b3 | | -| atl.cpp:482:5:482:6 | ref arg b3 | atl.cpp:484:28:484:29 | b3 | | -| atl.cpp:482:5:482:6 | ref arg b3 | atl.cpp:485:13:485:14 | b3 | | -| atl.cpp:482:5:482:6 | ref arg b3 | atl.cpp:514:3:514:3 | b3 | | -| atl.cpp:482:11:482:11 | x | atl.cpp:482:11:482:11 | call to CComBSTR | TAINT | -| atl.cpp:483:10:483:11 | b3 [post update] | atl.cpp:484:28:484:29 | b3 | | -| atl.cpp:483:10:483:11 | b3 [post update] | atl.cpp:485:13:485:14 | b3 | | -| atl.cpp:483:10:483:11 | b3 [post update] | atl.cpp:514:3:514:3 | b3 | | -| atl.cpp:484:28:484:29 | ref arg b3 | atl.cpp:485:13:485:14 | b3 | | -| atl.cpp:484:28:484:29 | ref arg b3 | atl.cpp:514:3:514:3 | b3 | | -| atl.cpp:485:11:485:14 | * ... | atl.cpp:485:10:485:14 | * ... | TAINT | -| atl.cpp:485:12:485:12 | call to operator& | atl.cpp:485:11:485:14 | * ... | TAINT | -| atl.cpp:485:13:485:14 | ref arg b3 | atl.cpp:514:3:514:3 | b3 | | -| atl.cpp:487:14:487:15 | call to CComBSTR | atl.cpp:488:5:488:6 | b4 | | -| atl.cpp:487:14:487:15 | call to CComBSTR | atl.cpp:489:10:489:11 | b4 | | -| atl.cpp:487:14:487:15 | call to CComBSTR | atl.cpp:492:19:492:20 | b4 | | -| atl.cpp:487:14:487:15 | call to CComBSTR | atl.cpp:514:3:514:3 | b4 | | -| atl.cpp:488:5:488:6 | ref arg b4 | atl.cpp:489:10:489:11 | b4 | | -| atl.cpp:488:5:488:6 | ref arg b4 | atl.cpp:492:19:492:20 | b4 | | -| atl.cpp:488:5:488:6 | ref arg b4 | atl.cpp:514:3:514:3 | b4 | | -| atl.cpp:489:10:489:11 | b4 [post update] | atl.cpp:492:19:492:20 | b4 | | -| atl.cpp:489:10:489:11 | b4 [post update] | atl.cpp:514:3:514:3 | b4 | | -| atl.cpp:489:13:489:17 | ref arg m_str | atl.cpp:492:22:492:26 | m_str | | -| atl.cpp:491:14:491:15 | call to CComBSTR | atl.cpp:492:5:492:6 | b5 | | -| atl.cpp:491:14:491:15 | call to CComBSTR | atl.cpp:493:10:493:11 | b5 | | -| atl.cpp:491:14:491:15 | call to CComBSTR | atl.cpp:514:3:514:3 | b5 | | -| atl.cpp:492:5:492:6 | ref arg b5 | atl.cpp:493:10:493:11 | b5 | | -| atl.cpp:492:5:492:6 | ref arg b5 | atl.cpp:514:3:514:3 | b5 | | -| atl.cpp:492:19:492:20 | b4 [post update] | atl.cpp:514:3:514:3 | b4 | | -| atl.cpp:493:10:493:11 | b5 [post update] | atl.cpp:514:3:514:3 | b5 | | -| atl.cpp:495:14:495:15 | call to CComBSTR | atl.cpp:496:5:496:6 | b6 | | -| atl.cpp:495:14:495:15 | call to CComBSTR | atl.cpp:497:10:497:11 | b6 | | -| atl.cpp:495:14:495:15 | call to CComBSTR | atl.cpp:514:3:514:3 | b6 | | -| atl.cpp:496:5:496:6 | ref arg b6 | atl.cpp:497:10:497:11 | b6 | | -| atl.cpp:496:5:496:6 | ref arg b6 | atl.cpp:514:3:514:3 | b6 | | -| atl.cpp:497:10:497:11 | b6 [post update] | atl.cpp:514:3:514:3 | b6 | | -| atl.cpp:499:14:499:15 | call to CComBSTR | atl.cpp:500:5:500:6 | b7 | | -| atl.cpp:499:14:499:15 | call to CComBSTR | atl.cpp:501:10:501:11 | b7 | | -| atl.cpp:499:14:499:15 | call to CComBSTR | atl.cpp:504:19:504:20 | b7 | | -| atl.cpp:499:14:499:15 | call to CComBSTR | atl.cpp:514:3:514:3 | b7 | | -| atl.cpp:500:5:500:6 | ref arg b7 | atl.cpp:501:10:501:11 | b7 | | -| atl.cpp:500:5:500:6 | ref arg b7 | atl.cpp:504:19:504:20 | b7 | | -| atl.cpp:500:5:500:6 | ref arg b7 | atl.cpp:514:3:514:3 | b7 | | -| atl.cpp:501:10:501:11 | b7 [post update] | atl.cpp:504:19:504:20 | b7 | | -| atl.cpp:501:10:501:11 | b7 [post update] | atl.cpp:514:3:514:3 | b7 | | -| atl.cpp:501:13:501:17 | ref arg m_str | atl.cpp:504:22:504:26 | m_str | | -| atl.cpp:503:14:503:15 | call to CComBSTR | atl.cpp:504:5:504:6 | b8 | | -| atl.cpp:503:14:503:15 | call to CComBSTR | atl.cpp:505:10:505:11 | b8 | | -| atl.cpp:503:14:503:15 | call to CComBSTR | atl.cpp:514:3:514:3 | b8 | | -| atl.cpp:504:5:504:6 | ref arg b8 | atl.cpp:505:10:505:11 | b8 | | -| atl.cpp:504:5:504:6 | ref arg b8 | atl.cpp:514:3:514:3 | b8 | | -| atl.cpp:504:19:504:20 | b7 [post update] | atl.cpp:514:3:514:3 | b7 | | -| atl.cpp:505:10:505:11 | b8 [post update] | atl.cpp:514:3:514:3 | b8 | | -| atl.cpp:507:14:507:15 | call to CComBSTR | atl.cpp:509:5:509:6 | b9 | | -| atl.cpp:507:14:507:15 | call to CComBSTR | atl.cpp:510:5:510:6 | b9 | | -| atl.cpp:507:14:507:15 | call to CComBSTR | atl.cpp:513:10:513:11 | b9 | | -| atl.cpp:507:14:507:15 | call to CComBSTR | atl.cpp:514:3:514:3 | b9 | | -| atl.cpp:508:17:508:20 | safe | atl.cpp:510:21:510:24 | safe | | -| atl.cpp:508:17:508:20 | safe | atl.cpp:511:10:511:13 | safe | | -| atl.cpp:509:5:509:6 | ref arg b9 | atl.cpp:510:5:510:6 | b9 | | -| atl.cpp:509:5:509:6 | ref arg b9 | atl.cpp:513:10:513:11 | b9 | | -| atl.cpp:509:5:509:6 | ref arg b9 | atl.cpp:514:3:514:3 | b9 | | -| atl.cpp:510:5:510:6 | ref arg b9 | atl.cpp:513:10:513:11 | b9 | | -| atl.cpp:510:5:510:6 | ref arg b9 | atl.cpp:514:3:514:3 | b9 | | -| atl.cpp:510:20:510:24 | ref arg & ... | atl.cpp:510:21:510:24 | safe [inner post update] | | -| atl.cpp:510:20:510:24 | ref arg & ... | atl.cpp:511:10:511:13 | safe | | -| atl.cpp:510:21:510:24 | safe | atl.cpp:510:20:510:24 | & ... | | -| atl.cpp:513:10:513:11 | ref arg b9 | atl.cpp:514:3:514:3 | b9 | | -| atl.cpp:516:16:516:39 | call to indirect_source | atl.cpp:518:16:518:16 | w | | -| atl.cpp:516:16:516:39 | call to indirect_source | atl.cpp:522:15:522:15 | w | | -| atl.cpp:516:16:516:39 | call to indirect_source | atl.cpp:526:20:526:20 | w | | -| atl.cpp:518:16:518:16 | ref arg w | atl.cpp:522:15:522:15 | w | | -| atl.cpp:518:16:518:16 | ref arg w | atl.cpp:526:20:526:20 | w | | -| atl.cpp:518:16:518:16 | w | atl.cpp:518:16:518:17 | call to CComBSTR | TAINT | -| atl.cpp:518:16:518:17 | call to CComBSTR | atl.cpp:519:10:519:10 | b | | -| atl.cpp:518:16:518:17 | call to CComBSTR | atl.cpp:524:3:524:3 | b | | -| atl.cpp:519:10:519:10 | b [post update] | atl.cpp:524:3:524:3 | b | | -| atl.cpp:521:14:521:15 | call to CComBSTR | atl.cpp:522:5:522:6 | b2 | | -| atl.cpp:521:14:521:15 | call to CComBSTR | atl.cpp:523:10:523:11 | b2 | | -| atl.cpp:521:14:521:15 | call to CComBSTR | atl.cpp:524:3:524:3 | b2 | | -| atl.cpp:522:5:522:6 | ref arg b2 | atl.cpp:523:10:523:11 | b2 | | -| atl.cpp:522:5:522:6 | ref arg b2 | atl.cpp:524:3:524:3 | b2 | | -| atl.cpp:522:15:522:15 | ref arg w | atl.cpp:526:20:526:20 | w | | -| atl.cpp:523:10:523:11 | b2 [post update] | atl.cpp:524:3:524:3 | b2 | | -| atl.cpp:526:16:526:21 | call to CComBSTR | atl.cpp:527:10:527:10 | b | | -| atl.cpp:526:16:526:21 | call to CComBSTR | atl.cpp:528:3:528:3 | b | | -| atl.cpp:527:10:527:10 | b [post update] | atl.cpp:528:3:528:3 | b | | -| atl.cpp:573:22:573:33 | call to getSafeArray | atl.cpp:574:8:574:11 | safe | | -| atl.cpp:573:22:573:33 | call to getSafeArray | atl.cpp:576:24:576:27 | safe | | -| atl.cpp:573:22:573:33 | call to getSafeArray | atl.cpp:587:11:587:14 | safe | | -| atl.cpp:574:8:574:11 | safe [post update] | atl.cpp:576:24:576:27 | safe | | -| atl.cpp:574:8:574:11 | safe [post update] | atl.cpp:587:11:587:14 | safe | | -| atl.cpp:576:24:576:27 | safe | atl.cpp:576:24:576:28 | call to CComSafeArray | TAINT | -| atl.cpp:576:24:576:28 | call to CComSafeArray | atl.cpp:577:8:577:8 | c | | -| atl.cpp:576:24:576:28 | call to CComSafeArray | atl.cpp:578:8:578:8 | c | | -| atl.cpp:576:24:576:28 | call to CComSafeArray | atl.cpp:579:8:579:8 | c | | -| atl.cpp:576:24:576:28 | call to CComSafeArray | atl.cpp:580:8:580:8 | c | | -| atl.cpp:576:24:576:28 | call to CComSafeArray | atl.cpp:581:3:581:3 | c | | -| atl.cpp:577:8:577:8 | ref arg c | atl.cpp:578:8:578:8 | c | | -| atl.cpp:577:8:577:8 | ref arg c | atl.cpp:579:8:579:8 | c | | -| atl.cpp:577:8:577:8 | ref arg c | atl.cpp:580:8:580:8 | c | | -| atl.cpp:577:8:577:8 | ref arg c | atl.cpp:581:3:581:3 | c | | -| atl.cpp:578:8:578:8 | ref arg c | atl.cpp:579:8:579:8 | c | | -| atl.cpp:578:8:578:8 | ref arg c | atl.cpp:580:8:580:8 | c | | -| atl.cpp:578:8:578:8 | ref arg c | atl.cpp:581:3:581:3 | c | | -| atl.cpp:579:8:579:8 | ref arg c | atl.cpp:580:8:580:8 | c | | -| atl.cpp:579:8:579:8 | ref arg c | atl.cpp:581:3:581:3 | c | | -| atl.cpp:580:8:580:8 | c [post update] | atl.cpp:581:3:581:3 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:584:10:584:10 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:585:10:585:10 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:586:10:586:10 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:587:5:587:5 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:588:10:588:10 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:589:10:589:10 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:590:10:590:10 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:591:35:591:35 | c | | -| atl.cpp:583:24:583:24 | call to CComSafeArray | atl.cpp:592:3:592:3 | c | | -| atl.cpp:584:10:584:10 | ref arg c | atl.cpp:585:10:585:10 | c | | -| atl.cpp:584:10:584:10 | ref arg c | atl.cpp:586:10:586:10 | c | | -| atl.cpp:584:10:584:10 | ref arg c | atl.cpp:587:5:587:5 | c | | -| atl.cpp:584:10:584:10 | ref arg c | atl.cpp:588:10:588:10 | c | | -| atl.cpp:584:10:584:10 | ref arg c | atl.cpp:589:10:589:10 | c | | -| atl.cpp:584:10:584:10 | ref arg c | atl.cpp:590:10:590:10 | c | | -| atl.cpp:584:10:584:10 | ref arg c | atl.cpp:591:35:591:35 | c | | -| atl.cpp:584:10:584:10 | ref arg c | atl.cpp:592:3:592:3 | c | | -| atl.cpp:585:10:585:10 | ref arg c | atl.cpp:586:10:586:10 | c | | -| atl.cpp:585:10:585:10 | ref arg c | atl.cpp:587:5:587:5 | c | | -| atl.cpp:585:10:585:10 | ref arg c | atl.cpp:588:10:588:10 | c | | -| atl.cpp:585:10:585:10 | ref arg c | atl.cpp:589:10:589:10 | c | | -| atl.cpp:585:10:585:10 | ref arg c | atl.cpp:590:10:590:10 | c | | -| atl.cpp:585:10:585:10 | ref arg c | atl.cpp:591:35:591:35 | c | | -| atl.cpp:585:10:585:10 | ref arg c | atl.cpp:592:3:592:3 | c | | -| atl.cpp:586:10:586:10 | ref arg c | atl.cpp:587:5:587:5 | c | | -| atl.cpp:586:10:586:10 | ref arg c | atl.cpp:588:10:588:10 | c | | -| atl.cpp:586:10:586:10 | ref arg c | atl.cpp:589:10:589:10 | c | | -| atl.cpp:586:10:586:10 | ref arg c | atl.cpp:590:10:590:10 | c | | -| atl.cpp:586:10:586:10 | ref arg c | atl.cpp:591:35:591:35 | c | | -| atl.cpp:586:10:586:10 | ref arg c | atl.cpp:592:3:592:3 | c | | -| atl.cpp:587:5:587:5 | ref arg c | atl.cpp:588:10:588:10 | c | | -| atl.cpp:587:5:587:5 | ref arg c | atl.cpp:589:10:589:10 | c | | -| atl.cpp:587:5:587:5 | ref arg c | atl.cpp:590:10:590:10 | c | | -| atl.cpp:587:5:587:5 | ref arg c | atl.cpp:591:35:591:35 | c | | -| atl.cpp:587:5:587:5 | ref arg c | atl.cpp:592:3:592:3 | c | | -| atl.cpp:588:10:588:10 | ref arg c | atl.cpp:589:10:589:10 | c | | -| atl.cpp:588:10:588:10 | ref arg c | atl.cpp:590:10:590:10 | c | | -| atl.cpp:588:10:588:10 | ref arg c | atl.cpp:591:35:591:35 | c | | -| atl.cpp:588:10:588:10 | ref arg c | atl.cpp:592:3:592:3 | c | | -| atl.cpp:589:10:589:10 | ref arg c | atl.cpp:590:10:590:10 | c | | -| atl.cpp:589:10:589:10 | ref arg c | atl.cpp:591:35:591:35 | c | | -| atl.cpp:589:10:589:10 | ref arg c | atl.cpp:592:3:592:3 | c | | -| atl.cpp:590:10:590:10 | ref arg c | atl.cpp:591:35:591:35 | c | | -| atl.cpp:590:10:590:10 | ref arg c | atl.cpp:592:3:592:3 | c | | -| atl.cpp:591:35:591:35 | ref arg c | atl.cpp:592:3:592:3 | c | | -| atl.cpp:594:24:594:24 | call to CComSafeArray | atl.cpp:595:5:595:5 | c | | -| atl.cpp:594:24:594:24 | call to CComSafeArray | atl.cpp:596:10:596:10 | c | | -| atl.cpp:594:24:594:24 | call to CComSafeArray | atl.cpp:597:10:597:10 | c | | -| atl.cpp:594:24:594:24 | call to CComSafeArray | atl.cpp:598:10:598:10 | c | | -| atl.cpp:594:24:594:24 | call to CComSafeArray | atl.cpp:599:3:599:3 | c | | -| atl.cpp:595:5:595:5 | ref arg c | atl.cpp:596:10:596:10 | c | | -| atl.cpp:595:5:595:5 | ref arg c | atl.cpp:597:10:597:10 | c | | -| atl.cpp:595:5:595:5 | ref arg c | atl.cpp:598:10:598:10 | c | | -| atl.cpp:595:5:595:5 | ref arg c | atl.cpp:599:3:599:3 | c | | -| atl.cpp:596:10:596:10 | ref arg c | atl.cpp:597:10:597:10 | c | | -| atl.cpp:596:10:596:10 | ref arg c | atl.cpp:598:10:598:10 | c | | -| atl.cpp:596:10:596:10 | ref arg c | atl.cpp:599:3:599:3 | c | | -| atl.cpp:597:10:597:10 | ref arg c | atl.cpp:598:10:598:10 | c | | -| atl.cpp:597:10:597:10 | ref arg c | atl.cpp:599:3:599:3 | c | | -| atl.cpp:598:10:598:10 | ref arg c | atl.cpp:599:3:599:3 | c | | -| atl.cpp:601:24:601:24 | call to CComSafeArray | atl.cpp:602:5:602:5 | c | | -| atl.cpp:601:24:601:24 | call to CComSafeArray | atl.cpp:603:10:603:10 | c | | -| atl.cpp:601:24:601:24 | call to CComSafeArray | atl.cpp:604:10:604:10 | c | | -| atl.cpp:601:24:601:24 | call to CComSafeArray | atl.cpp:605:3:605:3 | c | | -| atl.cpp:602:5:602:5 | ref arg c | atl.cpp:603:10:603:10 | c | | -| atl.cpp:602:5:602:5 | ref arg c | atl.cpp:604:10:604:10 | c | | -| atl.cpp:602:5:602:5 | ref arg c | atl.cpp:605:3:605:3 | c | | -| atl.cpp:603:10:603:10 | ref arg c | atl.cpp:604:10:604:10 | c | | -| atl.cpp:603:10:603:10 | ref arg c | atl.cpp:605:3:605:3 | c | | -| atl.cpp:604:10:604:10 | ref arg c | atl.cpp:605:3:605:3 | c | | -| atl.cpp:666:13:666:33 | call to indirect_source | atl.cpp:667:11:667:11 | x | | -| atl.cpp:666:13:666:33 | call to indirect_source | atl.cpp:676:20:676:20 | x | | -| atl.cpp:666:13:666:33 | call to indirect_source | atl.cpp:681:14:681:14 | x | | -| atl.cpp:666:13:666:33 | call to indirect_source | atl.cpp:689:11:689:11 | x | | -| atl.cpp:666:13:666:33 | call to indirect_source | atl.cpp:695:15:695:15 | x | | -| atl.cpp:666:13:666:33 | call to indirect_source | atl.cpp:700:24:700:24 | x | | -| atl.cpp:666:13:666:33 | call to indirect_source | atl.cpp:706:30:706:30 | x | | -| atl.cpp:667:11:667:11 | ref arg x | atl.cpp:676:20:676:20 | x | | -| atl.cpp:667:11:667:11 | ref arg x | atl.cpp:681:14:681:14 | x | | -| atl.cpp:667:11:667:11 | ref arg x | atl.cpp:689:11:689:11 | x | | -| atl.cpp:667:11:667:11 | ref arg x | atl.cpp:695:15:695:15 | x | | -| atl.cpp:667:11:667:11 | ref arg x | atl.cpp:700:24:700:24 | x | | -| atl.cpp:667:11:667:11 | ref arg x | atl.cpp:706:30:706:30 | x | | -| atl.cpp:667:11:667:11 | x | atl.cpp:667:11:667:12 | call to CPathT | TAINT | -| atl.cpp:667:11:667:12 | call to CPathT | atl.cpp:668:27:668:27 | p | | -| atl.cpp:667:11:667:12 | call to CPathT | atl.cpp:669:8:669:8 | p | | -| atl.cpp:667:11:667:12 | call to CPathT | atl.cpp:671:12:671:12 | p | | -| atl.cpp:668:27:668:27 | ref arg p | atl.cpp:669:8:669:8 | p | | -| atl.cpp:668:27:668:27 | ref arg p | atl.cpp:671:12:671:12 | p | | -| atl.cpp:669:8:669:8 | p [post update] | atl.cpp:671:12:671:12 | p | | -| atl.cpp:669:10:669:18 | ref arg m_strPath | atl.cpp:672:11:672:19 | m_strPath | | -| atl.cpp:671:12:671:12 | p | atl.cpp:671:12:671:13 | call to CPathT | | -| atl.cpp:671:12:671:13 | call to CPathT | atl.cpp:672:8:672:9 | p2 | | -| atl.cpp:675:11:675:11 | call to CPathT | atl.cpp:676:5:676:5 | p | | -| atl.cpp:675:11:675:11 | call to CPathT | atl.cpp:677:10:677:10 | p | | -| atl.cpp:676:5:676:5 | ref arg p | atl.cpp:677:10:677:10 | p | | -| atl.cpp:676:20:676:20 | ref arg x | atl.cpp:681:14:681:14 | x | | -| atl.cpp:676:20:676:20 | ref arg x | atl.cpp:689:11:689:11 | x | | -| atl.cpp:676:20:676:20 | ref arg x | atl.cpp:695:15:695:15 | x | | -| atl.cpp:676:20:676:20 | ref arg x | atl.cpp:700:24:700:24 | x | | -| atl.cpp:676:20:676:20 | ref arg x | atl.cpp:706:30:706:30 | x | | -| atl.cpp:680:11:680:11 | call to CPathT | atl.cpp:681:5:681:5 | p | | -| atl.cpp:680:11:680:11 | call to CPathT | atl.cpp:682:10:682:10 | p | | -| atl.cpp:680:11:680:11 | call to CPathT | atl.cpp:685:11:685:11 | p | | -| atl.cpp:681:5:681:5 | ref arg p | atl.cpp:682:10:682:10 | p | | -| atl.cpp:681:5:681:5 | ref arg p | atl.cpp:685:11:685:11 | p | | -| atl.cpp:681:14:681:14 | ref arg x | atl.cpp:689:11:689:11 | x | | -| atl.cpp:681:14:681:14 | ref arg x | atl.cpp:695:15:695:15 | x | | -| atl.cpp:681:14:681:14 | ref arg x | atl.cpp:700:24:700:24 | x | | -| atl.cpp:681:14:681:14 | ref arg x | atl.cpp:706:30:706:30 | x | | -| atl.cpp:682:10:682:10 | p [post update] | atl.cpp:685:11:685:11 | p | | -| atl.cpp:684:11:684:12 | call to CPathT | atl.cpp:685:5:685:6 | p2 | | -| atl.cpp:684:11:684:12 | call to CPathT | atl.cpp:686:10:686:11 | p2 | | -| atl.cpp:685:5:685:6 | ref arg p2 | atl.cpp:686:10:686:11 | p2 | | -| atl.cpp:685:11:685:11 | call to operator char *& | atl.cpp:685:8:685:8 | call to operator+= | TAINT | -| atl.cpp:688:11:688:12 | call to CPathT | atl.cpp:689:5:689:6 | p3 | | -| atl.cpp:688:11:688:12 | call to CPathT | atl.cpp:690:10:690:11 | p3 | | -| atl.cpp:689:5:689:6 | ref arg p3 | atl.cpp:690:10:690:11 | p3 | | -| atl.cpp:689:11:689:11 | ref arg x | atl.cpp:695:15:695:15 | x | | -| atl.cpp:689:11:689:11 | ref arg x | atl.cpp:700:24:700:24 | x | | -| atl.cpp:689:11:689:11 | ref arg x | atl.cpp:706:30:706:30 | x | | -| atl.cpp:689:11:689:11 | x | atl.cpp:689:8:689:8 | call to operator+= | TAINT | -| atl.cpp:694:11:694:11 | call to CPathT | atl.cpp:695:5:695:5 | p | | -| atl.cpp:694:11:694:11 | call to CPathT | atl.cpp:696:10:696:10 | p | | -| atl.cpp:695:5:695:5 | ref arg p | atl.cpp:696:10:696:10 | p | | -| atl.cpp:695:15:695:15 | ref arg x | atl.cpp:700:24:700:24 | x | | -| atl.cpp:695:15:695:15 | ref arg x | atl.cpp:706:30:706:30 | x | | -| atl.cpp:699:11:699:11 | call to CPathT | atl.cpp:700:5:700:5 | p | | -| atl.cpp:699:11:699:11 | call to CPathT | atl.cpp:701:10:701:10 | p | | -| atl.cpp:700:5:700:5 | ref arg p | atl.cpp:701:10:701:10 | p | | -| atl.cpp:700:24:700:24 | ref arg x | atl.cpp:706:30:706:30 | x | | -| atl.cpp:705:11:705:11 | call to CPathT | atl.cpp:706:15:706:15 | p | | -| atl.cpp:706:17:706:28 | call to CommonPrefix | atl.cpp:707:10:707:11 | p2 | | -| atl.cpp:706:17:706:28 | call to CommonPrefix | atl.cpp:708:10:708:11 | p2 | | -| atl.cpp:707:10:707:11 | p2 [post update] | atl.cpp:708:10:708:11 | p2 | | -| atl.cpp:735:11:735:21 | call to source | atl.cpp:738:11:738:11 | x | | -| atl.cpp:735:11:735:21 | call to source | atl.cpp:750:11:750:11 | x | | -| atl.cpp:735:11:735:21 | call to source | atl.cpp:754:23:754:23 | x | | -| atl.cpp:737:23:737:23 | call to CSimpleArray | atl.cpp:738:5:738:5 | a | | -| atl.cpp:737:23:737:23 | call to CSimpleArray | atl.cpp:739:10:739:10 | a | | -| atl.cpp:737:23:737:23 | call to CSimpleArray | atl.cpp:740:5:740:5 | a | | -| atl.cpp:737:23:737:23 | call to CSimpleArray | atl.cpp:741:10:741:10 | a | | -| atl.cpp:737:23:737:23 | call to CSimpleArray | atl.cpp:745:10:745:10 | a | | -| atl.cpp:737:23:737:23 | call to CSimpleArray | atl.cpp:747:3:747:3 | a | | -| atl.cpp:738:5:738:5 | ref arg a | atl.cpp:739:10:739:10 | a | | -| atl.cpp:738:5:738:5 | ref arg a | atl.cpp:740:5:740:5 | a | | -| atl.cpp:738:5:738:5 | ref arg a | atl.cpp:741:10:741:10 | a | | -| atl.cpp:738:5:738:5 | ref arg a | atl.cpp:745:10:745:10 | a | | -| atl.cpp:738:5:738:5 | ref arg a | atl.cpp:747:3:747:3 | a | | -| atl.cpp:739:10:739:10 | ref arg a | atl.cpp:740:5:740:5 | a | | -| atl.cpp:739:10:739:10 | ref arg a | atl.cpp:741:10:741:10 | a | | -| atl.cpp:739:10:739:10 | ref arg a | atl.cpp:745:10:745:10 | a | | -| atl.cpp:739:10:739:10 | ref arg a | atl.cpp:747:3:747:3 | a | | -| atl.cpp:740:5:740:5 | ref arg a | atl.cpp:741:10:741:10 | a | | -| atl.cpp:740:5:740:5 | ref arg a | atl.cpp:745:10:745:10 | a | | -| atl.cpp:740:5:740:5 | ref arg a | atl.cpp:747:3:747:3 | a | | -| atl.cpp:741:10:741:10 | ref arg a | atl.cpp:745:10:745:10 | a | | -| atl.cpp:741:10:741:10 | ref arg a | atl.cpp:747:3:747:3 | a | | -| atl.cpp:743:23:743:24 | call to CSimpleArray | atl.cpp:744:10:744:11 | a2 | | -| atl.cpp:743:23:743:24 | call to CSimpleArray | atl.cpp:745:5:745:6 | a2 | | -| atl.cpp:743:23:743:24 | call to CSimpleArray | atl.cpp:746:10:746:11 | a2 | | -| atl.cpp:743:23:743:24 | call to CSimpleArray | atl.cpp:747:3:747:3 | a2 | | -| atl.cpp:744:10:744:11 | ref arg a2 | atl.cpp:745:5:745:6 | a2 | | -| atl.cpp:744:10:744:11 | ref arg a2 | atl.cpp:746:10:746:11 | a2 | | -| atl.cpp:744:10:744:11 | ref arg a2 | atl.cpp:747:3:747:3 | a2 | | -| atl.cpp:745:5:745:6 | ref arg a2 | atl.cpp:746:10:746:11 | a2 | | -| atl.cpp:745:5:745:6 | ref arg a2 | atl.cpp:747:3:747:3 | a2 | | -| atl.cpp:745:10:745:10 | a | atl.cpp:745:5:745:6 | ref arg a2 | TAINT | -| atl.cpp:745:10:745:10 | a | atl.cpp:745:8:745:8 | call to operator= | TAINT | -| atl.cpp:746:10:746:11 | ref arg a2 | atl.cpp:747:3:747:3 | a2 | | -| atl.cpp:749:23:749:23 | call to CSimpleArray | atl.cpp:750:5:750:5 | a | | -| atl.cpp:749:23:749:23 | call to CSimpleArray | atl.cpp:751:10:751:10 | a | | -| atl.cpp:749:23:749:23 | call to CSimpleArray | atl.cpp:756:3:756:3 | a | | -| atl.cpp:750:5:750:5 | ref arg a | atl.cpp:751:10:751:10 | a | | -| atl.cpp:750:5:750:5 | ref arg a | atl.cpp:756:3:756:3 | a | | -| atl.cpp:751:10:751:10 | ref arg a | atl.cpp:756:3:756:3 | a | | -| atl.cpp:753:23:753:24 | call to CSimpleArray | atl.cpp:754:15:754:16 | a2 | | -| atl.cpp:753:23:753:24 | call to CSimpleArray | atl.cpp:755:10:755:11 | a2 | | -| atl.cpp:753:23:753:24 | call to CSimpleArray | atl.cpp:756:3:756:3 | a2 | | -| atl.cpp:754:18:754:21 | call to Find | atl.cpp:755:13:755:15 | pos | | -| atl.cpp:755:10:755:11 | ref arg a2 | atl.cpp:756:3:756:3 | a2 | | -| atl.cpp:780:16:780:31 | call to source | atl.cpp:783:20:783:20 | x | | -| atl.cpp:780:16:780:31 | call to source | atl.cpp:793:26:793:26 | x | | -| atl.cpp:780:16:780:31 | call to source | atl.cpp:798:32:798:32 | x | | -| atl.cpp:780:16:780:31 | call to source | atl.cpp:804:22:804:22 | x | | -| atl.cpp:780:16:780:31 | call to source | atl.cpp:809:30:809:30 | x | | -| atl.cpp:782:33:782:33 | call to CSimpleMap | atl.cpp:783:5:783:5 | a | | -| atl.cpp:782:33:782:33 | call to CSimpleMap | atl.cpp:784:10:784:10 | a | | -| atl.cpp:782:33:782:33 | call to CSimpleMap | atl.cpp:785:3:785:3 | a | | -| atl.cpp:783:5:783:5 | ref arg a | atl.cpp:784:10:784:10 | a | | -| atl.cpp:783:5:783:5 | ref arg a | atl.cpp:785:3:785:3 | a | | -| atl.cpp:784:10:784:10 | ref arg a | atl.cpp:785:3:785:3 | a | | -| atl.cpp:787:33:787:33 | call to CSimpleMap | atl.cpp:788:16:788:16 | a | | -| atl.cpp:787:33:787:33 | call to CSimpleMap | atl.cpp:789:10:789:10 | a | | -| atl.cpp:787:33:787:33 | call to CSimpleMap | atl.cpp:790:3:790:3 | a | | -| atl.cpp:788:18:788:24 | call to FindKey | atl.cpp:789:23:789:25 | pos | | -| atl.cpp:789:10:789:10 | ref arg a | atl.cpp:790:3:790:3 | a | | -| atl.cpp:792:33:792:33 | call to CSimpleMap | atl.cpp:793:16:793:16 | a | | -| atl.cpp:792:33:792:33 | call to CSimpleMap | atl.cpp:794:10:794:10 | a | | -| atl.cpp:792:33:792:33 | call to CSimpleMap | atl.cpp:795:3:795:3 | a | | -| atl.cpp:793:18:793:24 | call to FindVal | atl.cpp:794:23:794:25 | pos | | -| atl.cpp:794:10:794:10 | ref arg a | atl.cpp:795:3:795:3 | a | | -| atl.cpp:797:33:797:33 | call to CSimpleMap | atl.cpp:798:16:798:16 | a | | -| atl.cpp:797:33:797:33 | call to CSimpleMap | atl.cpp:800:10:800:10 | a | | -| atl.cpp:797:33:797:33 | call to CSimpleMap | atl.cpp:801:3:801:3 | a | | -| atl.cpp:798:16:798:16 | ref arg a | atl.cpp:800:10:800:10 | a | | -| atl.cpp:798:16:798:16 | ref arg a | atl.cpp:801:3:801:3 | a | | -| atl.cpp:798:18:798:30 | call to ReverseLookup | atl.cpp:799:10:799:12 | key | | -| atl.cpp:798:18:798:30 | call to ReverseLookup | atl.cpp:800:19:800:21 | key | | -| atl.cpp:799:10:799:12 | ref arg key | atl.cpp:800:19:800:21 | key | | -| atl.cpp:800:10:800:10 | ref arg a | atl.cpp:801:3:801:3 | a | | -| atl.cpp:803:33:803:33 | call to CSimpleMap | atl.cpp:804:5:804:5 | a | | -| atl.cpp:803:33:803:33 | call to CSimpleMap | atl.cpp:805:10:805:10 | a | | -| atl.cpp:803:33:803:33 | call to CSimpleMap | atl.cpp:806:3:806:3 | a | | -| atl.cpp:804:5:804:5 | ref arg a | atl.cpp:805:10:805:10 | a | | -| atl.cpp:804:5:804:5 | ref arg a | atl.cpp:806:3:806:3 | a | | -| atl.cpp:805:10:805:10 | ref arg a | atl.cpp:806:3:806:3 | a | | -| atl.cpp:808:33:808:33 | call to CSimpleMap | atl.cpp:809:5:809:5 | a | | -| atl.cpp:808:33:808:33 | call to CSimpleMap | atl.cpp:810:10:810:10 | a | | -| atl.cpp:808:33:808:33 | call to CSimpleMap | atl.cpp:811:3:811:3 | a | | -| atl.cpp:809:5:809:5 | ref arg a | atl.cpp:810:10:810:10 | a | | -| atl.cpp:809:5:809:5 | ref arg a | atl.cpp:811:3:811:3 | a | | -| atl.cpp:810:10:810:10 | ref arg a | atl.cpp:811:3:811:3 | a | | -| atl.cpp:852:13:852:33 | call to indirect_source | atl.cpp:854:16:854:16 | x | | -| atl.cpp:852:13:852:33 | call to indirect_source | atl.cpp:867:19:867:19 | x | | -| atl.cpp:852:13:852:33 | call to indirect_source | atl.cpp:873:23:873:23 | x | | -| atl.cpp:852:13:852:33 | call to indirect_source | atl.cpp:878:22:878:22 | x | | -| atl.cpp:852:13:852:33 | call to indirect_source | atl.cpp:883:22:883:22 | x | | -| atl.cpp:852:13:852:33 | call to indirect_source | atl.cpp:888:24:888:24 | x | | -| atl.cpp:852:13:852:33 | call to indirect_source | atl.cpp:893:21:893:21 | x | | -| atl.cpp:852:13:852:33 | call to indirect_source | atl.cpp:898:22:898:22 | x | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:854:3:854:5 | url | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:855:8:855:10 | url | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:856:8:856:10 | url | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:857:8:857:10 | url | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:858:8:858:10 | url | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:859:8:859:10 | url | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:860:8:860:10 | url | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:861:8:861:10 | url | | -| atl.cpp:853:8:853:10 | call to CUrl | atl.cpp:901:1:901:1 | url | | -| atl.cpp:854:3:854:5 | ref arg url | atl.cpp:855:8:855:10 | url | | -| atl.cpp:854:3:854:5 | ref arg url | atl.cpp:856:8:856:10 | url | | -| atl.cpp:854:3:854:5 | ref arg url | atl.cpp:857:8:857:10 | url | | -| atl.cpp:854:3:854:5 | ref arg url | atl.cpp:858:8:858:10 | url | | -| atl.cpp:854:3:854:5 | ref arg url | atl.cpp:859:8:859:10 | url | | -| atl.cpp:854:3:854:5 | ref arg url | atl.cpp:860:8:860:10 | url | | -| atl.cpp:854:3:854:5 | ref arg url | atl.cpp:861:8:861:10 | url | | -| atl.cpp:854:3:854:5 | ref arg url | atl.cpp:901:1:901:1 | url | | -| atl.cpp:864:10:864:13 | call to CUrl | atl.cpp:867:5:867:8 | url2 | | -| atl.cpp:864:10:864:13 | call to CUrl | atl.cpp:868:5:868:8 | url2 | | -| atl.cpp:864:10:864:13 | call to CUrl | atl.cpp:870:3:870:3 | url2 | | -| atl.cpp:865:11:865:13 | len | atl.cpp:868:29:868:31 | len | | -| atl.cpp:866:10:866:15 | buffer | atl.cpp:868:20:868:25 | buffer | | -| atl.cpp:866:10:866:15 | buffer | atl.cpp:869:10:869:15 | buffer | | -| atl.cpp:867:5:867:8 | ref arg url2 | atl.cpp:868:5:868:8 | url2 | | -| atl.cpp:867:5:867:8 | ref arg url2 | atl.cpp:870:3:870:3 | url2 | | -| atl.cpp:868:20:868:25 | ref arg buffer | atl.cpp:869:10:869:15 | buffer | | -| atl.cpp:868:28:868:31 | ref arg & ... | atl.cpp:868:29:868:31 | len [inner post update] | | -| atl.cpp:868:29:868:31 | len | atl.cpp:868:28:868:31 | & ... | | -| atl.cpp:872:10:872:13 | call to CUrl | atl.cpp:873:5:873:8 | url2 | | -| atl.cpp:872:10:872:13 | call to CUrl | atl.cpp:874:10:874:13 | url2 | | -| atl.cpp:872:10:872:13 | call to CUrl | atl.cpp:875:3:875:3 | url2 | | -| atl.cpp:873:5:873:8 | ref arg url2 | atl.cpp:874:10:874:13 | url2 | | -| atl.cpp:873:5:873:8 | ref arg url2 | atl.cpp:875:3:875:3 | url2 | | -| atl.cpp:877:10:877:13 | call to CUrl | atl.cpp:878:5:878:8 | url2 | | -| atl.cpp:877:10:877:13 | call to CUrl | atl.cpp:879:10:879:13 | url2 | | -| atl.cpp:877:10:877:13 | call to CUrl | atl.cpp:880:3:880:3 | url2 | | -| atl.cpp:878:5:878:8 | ref arg url2 | atl.cpp:879:10:879:13 | url2 | | -| atl.cpp:878:5:878:8 | ref arg url2 | atl.cpp:880:3:880:3 | url2 | | -| atl.cpp:882:10:882:13 | call to CUrl | atl.cpp:883:5:883:8 | url2 | | -| atl.cpp:882:10:882:13 | call to CUrl | atl.cpp:884:10:884:13 | url2 | | -| atl.cpp:882:10:882:13 | call to CUrl | atl.cpp:885:3:885:3 | url2 | | -| atl.cpp:883:5:883:8 | ref arg url2 | atl.cpp:884:10:884:13 | url2 | | -| atl.cpp:883:5:883:8 | ref arg url2 | atl.cpp:885:3:885:3 | url2 | | -| atl.cpp:887:10:887:13 | call to CUrl | atl.cpp:888:5:888:8 | url2 | | -| atl.cpp:887:10:887:13 | call to CUrl | atl.cpp:889:10:889:13 | url2 | | -| atl.cpp:887:10:887:13 | call to CUrl | atl.cpp:890:3:890:3 | url2 | | -| atl.cpp:888:5:888:8 | ref arg url2 | atl.cpp:889:10:889:13 | url2 | | -| atl.cpp:888:5:888:8 | ref arg url2 | atl.cpp:890:3:890:3 | url2 | | -| atl.cpp:892:10:892:13 | call to CUrl | atl.cpp:893:5:893:8 | url2 | | -| atl.cpp:892:10:892:13 | call to CUrl | atl.cpp:894:10:894:13 | url2 | | -| atl.cpp:892:10:892:13 | call to CUrl | atl.cpp:895:3:895:3 | url2 | | -| atl.cpp:893:5:893:8 | ref arg url2 | atl.cpp:894:10:894:13 | url2 | | -| atl.cpp:893:5:893:8 | ref arg url2 | atl.cpp:895:3:895:3 | url2 | | -| atl.cpp:897:10:897:13 | call to CUrl | atl.cpp:898:5:898:8 | url2 | | -| atl.cpp:897:10:897:13 | call to CUrl | atl.cpp:899:10:899:13 | url2 | | -| atl.cpp:897:10:897:13 | call to CUrl | atl.cpp:900:3:900:3 | url2 | | -| atl.cpp:898:5:898:8 | ref arg url2 | atl.cpp:899:10:899:13 | url2 | | -| atl.cpp:898:5:898:8 | ref arg url2 | atl.cpp:900:3:900:3 | url2 | | -| atl.cpp:954:13:954:33 | call to indirect_source | atl.cpp:956:27:956:27 | x | | -| atl.cpp:954:13:954:33 | call to indirect_source | atl.cpp:959:27:959:27 | x | | -| atl.cpp:954:13:954:33 | call to indirect_source | atl.cpp:978:44:978:44 | x | | -| atl.cpp:954:13:954:33 | call to indirect_source | atl.cpp:982:49:982:49 | x | | -| atl.cpp:954:13:954:33 | call to indirect_source | atl.cpp:986:54:986:54 | x | | -| atl.cpp:956:27:956:41 | call to CSimpleStringT | atl.cpp:957:8:957:9 | s1 | | -| atl.cpp:956:27:956:41 | call to CSimpleStringT | atl.cpp:1008:50:1008:51 | s1 | | -| atl.cpp:956:27:956:41 | call to CSimpleStringT | atl.cpp:1010:8:1010:9 | s1 | | -| atl.cpp:956:27:956:41 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s1 | | -| atl.cpp:959:27:959:37 | call to CSimpleStringT | atl.cpp:960:8:960:9 | s2 | | -| atl.cpp:959:27:959:37 | call to CSimpleStringT | atl.cpp:962:27:962:28 | s2 | | -| atl.cpp:959:27:959:37 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s2 | | -| atl.cpp:962:27:962:28 | s2 | atl.cpp:962:27:962:29 | call to CSimpleStringT | | -| atl.cpp:962:27:962:29 | call to CSimpleStringT | atl.cpp:963:8:963:9 | s3 | | -| atl.cpp:962:27:962:29 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s3 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:966:3:966:4 | s4 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:967:8:967:9 | s4 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:970:13:970:14 | s4 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:989:8:989:9 | s4 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:990:8:990:9 | s4 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:991:8:991:9 | s4 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:992:8:992:9 | s4 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:994:8:994:9 | s4 | | -| atl.cpp:965:24:965:25 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s4 | | -| atl.cpp:966:3:966:4 | ref arg s4 | atl.cpp:967:8:967:9 | s4 | | -| atl.cpp:966:3:966:4 | ref arg s4 | atl.cpp:970:13:970:14 | s4 | | -| atl.cpp:966:3:966:4 | ref arg s4 | atl.cpp:989:8:989:9 | s4 | | -| atl.cpp:966:3:966:4 | ref arg s4 | atl.cpp:990:8:990:9 | s4 | | -| atl.cpp:966:3:966:4 | ref arg s4 | atl.cpp:991:8:991:9 | s4 | | -| atl.cpp:966:3:966:4 | ref arg s4 | atl.cpp:992:8:992:9 | s4 | | -| atl.cpp:966:3:966:4 | ref arg s4 | atl.cpp:994:8:994:9 | s4 | | -| atl.cpp:966:3:966:4 | ref arg s4 | atl.cpp:1011:1:1011:1 | s4 | | -| atl.cpp:969:24:969:25 | call to CSimpleStringT | atl.cpp:970:3:970:4 | s5 | | -| atl.cpp:969:24:969:25 | call to CSimpleStringT | atl.cpp:971:8:971:9 | s5 | | -| atl.cpp:969:24:969:25 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s5 | | -| atl.cpp:970:3:970:4 | ref arg s5 | atl.cpp:971:8:971:9 | s5 | | -| atl.cpp:970:3:970:4 | ref arg s5 | atl.cpp:1011:1:1011:1 | s5 | | -| atl.cpp:973:24:973:25 | call to CSimpleStringT | atl.cpp:974:3:974:4 | s6 | | -| atl.cpp:973:24:973:25 | call to CSimpleStringT | atl.cpp:975:8:975:9 | s6 | | -| atl.cpp:973:24:973:25 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s6 | | -| atl.cpp:974:3:974:4 | ref arg s6 | atl.cpp:975:8:975:9 | s6 | | -| atl.cpp:974:3:974:4 | ref arg s6 | atl.cpp:1011:1:1011:1 | s6 | | -| atl.cpp:977:8:977:14 | buffer1 | atl.cpp:978:35:978:41 | buffer1 | | -| atl.cpp:977:8:977:14 | buffer1 | atl.cpp:979:8:979:14 | buffer1 | | -| atl.cpp:978:35:978:41 | ref arg buffer1 | atl.cpp:979:8:979:14 | buffer1 | | -| atl.cpp:981:8:981:14 | buffer2 | atl.cpp:982:35:982:41 | buffer2 | | -| atl.cpp:981:8:981:14 | buffer2 | atl.cpp:983:8:983:14 | buffer2 | | -| atl.cpp:982:35:982:41 | ref arg buffer2 | atl.cpp:983:8:983:14 | buffer2 | | -| atl.cpp:985:8:985:14 | buffer3 | atl.cpp:986:45:986:51 | buffer3 | | -| atl.cpp:985:8:985:14 | buffer3 | atl.cpp:987:8:987:14 | buffer3 | | -| atl.cpp:986:45:986:51 | ref arg buffer3 | atl.cpp:987:8:987:14 | buffer3 | | -| atl.cpp:990:8:990:9 | ref arg s4 | atl.cpp:991:8:991:9 | s4 | | -| atl.cpp:990:8:990:9 | ref arg s4 | atl.cpp:992:8:992:9 | s4 | | -| atl.cpp:990:8:990:9 | ref arg s4 | atl.cpp:994:8:994:9 | s4 | | -| atl.cpp:990:8:990:9 | ref arg s4 | atl.cpp:1011:1:1011:1 | s4 | | -| atl.cpp:991:8:991:9 | ref arg s4 | atl.cpp:992:8:992:9 | s4 | | -| atl.cpp:991:8:991:9 | ref arg s4 | atl.cpp:994:8:994:9 | s4 | | -| atl.cpp:991:8:991:9 | ref arg s4 | atl.cpp:1011:1:1011:1 | s4 | | -| atl.cpp:992:8:992:9 | ref arg s4 | atl.cpp:994:8:994:9 | s4 | | -| atl.cpp:992:8:992:9 | ref arg s4 | atl.cpp:1011:1:1011:1 | s4 | | -| atl.cpp:994:8:994:9 | ref arg s4 | atl.cpp:1011:1:1011:1 | s4 | | -| atl.cpp:996:24:996:25 | call to CSimpleStringT | atl.cpp:997:3:997:4 | s7 | | -| atl.cpp:996:24:996:25 | call to CSimpleStringT | atl.cpp:998:8:998:9 | s7 | | -| atl.cpp:996:24:996:25 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s7 | | -| atl.cpp:997:3:997:4 | ref arg s7 | atl.cpp:998:8:998:9 | s7 | | -| atl.cpp:997:3:997:4 | ref arg s7 | atl.cpp:1011:1:1011:1 | s7 | | -| atl.cpp:1000:24:1000:25 | call to CSimpleStringT | atl.cpp:1001:3:1001:4 | s8 | | -| atl.cpp:1000:24:1000:25 | call to CSimpleStringT | atl.cpp:1002:8:1002:9 | s8 | | -| atl.cpp:1000:24:1000:25 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s8 | | -| atl.cpp:1001:3:1001:4 | ref arg s8 | atl.cpp:1002:8:1002:9 | s8 | | -| atl.cpp:1001:3:1001:4 | ref arg s8 | atl.cpp:1011:1:1011:1 | s8 | | -| atl.cpp:1004:24:1004:25 | call to CSimpleStringT | atl.cpp:1005:3:1005:4 | s9 | | -| atl.cpp:1004:24:1004:25 | call to CSimpleStringT | atl.cpp:1006:8:1006:9 | s9 | | -| atl.cpp:1004:24:1004:25 | call to CSimpleStringT | atl.cpp:1011:1:1011:1 | s9 | | -| atl.cpp:1005:3:1005:4 | ref arg s9 | atl.cpp:1006:8:1006:9 | s9 | | -| atl.cpp:1005:3:1005:4 | ref arg s9 | atl.cpp:1011:1:1011:1 | s9 | | -| atl.cpp:1099:15:1099:29 | call to source | atl.cpp:1101:21:1101:21 | v | | -| atl.cpp:1099:15:1099:29 | call to source | atl.cpp:1104:21:1104:21 | v | | -| atl.cpp:1101:21:1101:21 | v | atl.cpp:1101:21:1101:22 | call to CStringT | TAINT | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1102:8:1102:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1136:43:1136:44 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1138:15:1138:16 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1172:8:1172:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1178:8:1178:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1179:8:1179:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1180:8:1180:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1181:8:1181:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1194:3:1194:4 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1197:8:1197:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1198:8:1198:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1201:8:1201:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1203:8:1203:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1204:8:1204:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1205:8:1205:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1101:21:1101:22 | call to CStringT | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1104:21:1104:31 | call to CStringT | atl.cpp:1105:8:1105:9 | s2 | | -| atl.cpp:1104:21:1104:31 | call to CStringT | atl.cpp:1107:21:1107:22 | s2 | | -| atl.cpp:1104:21:1104:31 | call to CStringT | atl.cpp:1191:8:1191:9 | s2 | | -| atl.cpp:1104:21:1104:31 | call to CStringT | atl.cpp:1212:1:1212:1 | s2 | | -| atl.cpp:1107:21:1107:22 | s2 | atl.cpp:1107:21:1107:23 | call to CStringT | | -| atl.cpp:1107:21:1107:23 | call to CStringT | atl.cpp:1108:8:1108:9 | s3 | | -| atl.cpp:1107:21:1107:23 | call to CStringT | atl.cpp:1212:1:1212:1 | s3 | | -| atl.cpp:1110:13:1110:33 | call to indirect_source | atl.cpp:1111:21:1111:21 | x | | -| atl.cpp:1110:13:1110:33 | call to indirect_source | atl.cpp:1118:21:1118:21 | x | | -| atl.cpp:1110:13:1110:33 | call to indirect_source | atl.cpp:1165:17:1165:17 | x | | -| atl.cpp:1110:13:1110:33 | call to indirect_source | atl.cpp:1184:22:1184:22 | x | | -| atl.cpp:1111:21:1111:21 | ref arg x | atl.cpp:1118:21:1118:21 | x | | -| atl.cpp:1111:21:1111:21 | ref arg x | atl.cpp:1165:17:1165:17 | x | | -| atl.cpp:1111:21:1111:21 | ref arg x | atl.cpp:1184:22:1184:22 | x | | -| atl.cpp:1111:21:1111:21 | x | atl.cpp:1111:21:1111:22 | call to CStringT | TAINT | -| atl.cpp:1111:21:1111:22 | call to CStringT | atl.cpp:1112:8:1112:9 | s4 | | -| atl.cpp:1111:21:1111:22 | call to CStringT | atl.cpp:1212:1:1212:1 | s4 | | -| atl.cpp:1114:16:1114:39 | call to indirect_source | atl.cpp:1115:24:1115:24 | y | | -| atl.cpp:1114:16:1114:39 | call to indirect_source | atl.cpp:1121:24:1121:24 | y | | -| atl.cpp:1115:24:1115:24 | ref arg y | atl.cpp:1121:24:1121:24 | y | | -| atl.cpp:1115:24:1115:24 | y | atl.cpp:1115:24:1115:25 | call to CStringT | TAINT | -| atl.cpp:1115:24:1115:25 | call to CStringT | atl.cpp:1116:8:1116:9 | s5 | | -| atl.cpp:1115:24:1115:25 | call to CStringT | atl.cpp:1212:1:1212:1 | s5 | | -| atl.cpp:1118:21:1118:31 | call to CStringT | atl.cpp:1119:8:1119:9 | s6 | | -| atl.cpp:1118:21:1118:31 | call to CStringT | atl.cpp:1212:1:1212:1 | s6 | | -| atl.cpp:1121:24:1121:34 | call to CStringT | atl.cpp:1122:8:1122:9 | s7 | | -| atl.cpp:1121:24:1121:34 | call to CStringT | atl.cpp:1212:1:1212:1 | s7 | | -| atl.cpp:1124:24:1124:53 | call to indirect_source | atl.cpp:1125:21:1125:23 | ucs | | -| atl.cpp:1125:21:1125:23 | ucs | atl.cpp:1125:21:1125:24 | call to CStringT | TAINT | -| atl.cpp:1125:21:1125:24 | call to CStringT | atl.cpp:1126:8:1126:9 | s8 | | -| atl.cpp:1125:21:1125:24 | call to CStringT | atl.cpp:1212:1:1212:1 | s8 | | -| atl.cpp:1128:12:1128:23 | call to source | atl.cpp:1129:21:1129:21 | c | | -| atl.cpp:1129:21:1129:21 | c | atl.cpp:1129:21:1129:22 | call to CStringT | TAINT | -| atl.cpp:1129:21:1129:22 | call to CStringT | atl.cpp:1130:8:1130:9 | s9 | | -| atl.cpp:1129:21:1129:22 | call to CStringT | atl.cpp:1212:1:1212:1 | s9 | | -| atl.cpp:1132:16:1132:30 | call to source | atl.cpp:1133:25:1133:26 | wc | | -| atl.cpp:1133:25:1133:26 | wc | atl.cpp:1133:25:1133:27 | call to CStringT | TAINT | -| atl.cpp:1133:25:1133:27 | call to CStringT | atl.cpp:1134:8:1134:10 | s10 | | -| atl.cpp:1133:25:1133:27 | call to CStringT | atl.cpp:1212:1:1212:1 | s10 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1172:8:1172:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1178:8:1178:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1179:8:1179:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1180:8:1180:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1181:8:1181:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1194:3:1194:4 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1197:8:1197:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1198:8:1198:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1201:8:1201:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1203:8:1203:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1204:8:1204:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1205:8:1205:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1138:15:1138:16 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1138:18:1138:31 | call to AllocSysString | atl.cpp:1139:8:1139:11 | bstr | | -| atl.cpp:1141:18:1141:20 | call to CStringT | atl.cpp:1142:3:1142:5 | s11 | | -| atl.cpp:1141:18:1141:20 | call to CStringT | atl.cpp:1143:8:1143:10 | s11 | | -| atl.cpp:1141:18:1141:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s11 | | -| atl.cpp:1142:3:1142:5 | ref arg s11 | atl.cpp:1143:8:1143:10 | s11 | | -| atl.cpp:1142:3:1142:5 | ref arg s11 | atl.cpp:1212:1:1212:1 | s11 | | -| atl.cpp:1145:18:1145:20 | call to CStringT | atl.cpp:1146:3:1146:5 | s12 | | -| atl.cpp:1145:18:1145:20 | call to CStringT | atl.cpp:1147:8:1147:10 | s12 | | -| atl.cpp:1145:18:1145:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s12 | | -| atl.cpp:1146:3:1146:5 | ref arg s12 | atl.cpp:1147:8:1147:10 | s12 | | -| atl.cpp:1146:3:1146:5 | ref arg s12 | atl.cpp:1212:1:1212:1 | s12 | | -| atl.cpp:1149:18:1149:20 | call to CStringT | atl.cpp:1150:3:1150:5 | s13 | | -| atl.cpp:1149:18:1149:20 | call to CStringT | atl.cpp:1151:8:1151:10 | s13 | | -| atl.cpp:1149:18:1149:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s13 | | -| atl.cpp:1150:3:1150:5 | ref arg s13 | atl.cpp:1151:8:1151:10 | s13 | | -| atl.cpp:1150:3:1150:5 | ref arg s13 | atl.cpp:1212:1:1212:1 | s13 | | -| atl.cpp:1153:18:1153:20 | call to CStringT | atl.cpp:1154:3:1154:5 | s14 | | -| atl.cpp:1153:18:1153:20 | call to CStringT | atl.cpp:1155:8:1155:10 | s14 | | -| atl.cpp:1153:18:1153:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s14 | | -| atl.cpp:1154:3:1154:5 | ref arg s14 | atl.cpp:1155:8:1155:10 | s14 | | -| atl.cpp:1154:3:1154:5 | ref arg s14 | atl.cpp:1212:1:1212:1 | s14 | | -| atl.cpp:1157:18:1157:20 | call to CStringT | atl.cpp:1158:3:1158:5 | s15 | | -| atl.cpp:1157:18:1157:20 | call to CStringT | atl.cpp:1159:8:1159:10 | s15 | | -| atl.cpp:1157:18:1157:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s15 | | -| atl.cpp:1158:3:1158:5 | ref arg s15 | atl.cpp:1159:8:1159:10 | s15 | | -| atl.cpp:1158:3:1158:5 | ref arg s15 | atl.cpp:1212:1:1212:1 | s15 | | -| atl.cpp:1161:18:1161:20 | call to CStringT | atl.cpp:1162:3:1162:5 | s16 | | -| atl.cpp:1161:18:1161:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s16 | | -| atl.cpp:1162:3:1162:5 | ref arg s16 | atl.cpp:1212:1:1212:1 | s16 | | -| atl.cpp:1164:18:1164:20 | call to CStringT | atl.cpp:1165:3:1165:5 | s17 | | -| atl.cpp:1164:18:1164:20 | call to CStringT | atl.cpp:1166:8:1166:10 | s17 | | -| atl.cpp:1164:18:1164:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s17 | | -| atl.cpp:1165:3:1165:5 | ref arg s17 | atl.cpp:1166:8:1166:10 | s17 | | -| atl.cpp:1165:3:1165:5 | ref arg s17 | atl.cpp:1212:1:1212:1 | s17 | | -| atl.cpp:1168:18:1168:20 | call to CStringT | atl.cpp:1169:3:1169:5 | s18 | | -| atl.cpp:1168:18:1168:20 | call to CStringT | atl.cpp:1170:8:1170:10 | s18 | | -| atl.cpp:1168:18:1168:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s18 | | -| atl.cpp:1169:3:1169:5 | ref arg s18 | atl.cpp:1170:8:1170:10 | s18 | | -| atl.cpp:1169:3:1169:5 | ref arg s18 | atl.cpp:1212:1:1212:1 | s18 | | -| atl.cpp:1174:18:1174:20 | call to CStringT | atl.cpp:1175:3:1175:5 | s20 | | -| atl.cpp:1174:18:1174:20 | call to CStringT | atl.cpp:1176:8:1176:10 | s20 | | -| atl.cpp:1174:18:1174:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s20 | | -| atl.cpp:1175:3:1175:5 | ref arg s20 | atl.cpp:1176:8:1176:10 | s20 | | -| atl.cpp:1175:3:1175:5 | ref arg s20 | atl.cpp:1212:1:1212:1 | s20 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1179:8:1179:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1180:8:1180:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1181:8:1181:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1194:3:1194:4 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1197:8:1197:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1198:8:1198:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1201:8:1201:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1203:8:1203:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1204:8:1204:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1205:8:1205:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1178:8:1178:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1180:8:1180:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1181:8:1181:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1194:3:1194:4 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1197:8:1197:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1198:8:1198:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1201:8:1201:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1203:8:1203:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1204:8:1204:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1205:8:1205:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1179:8:1179:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1181:8:1181:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1194:3:1194:4 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1197:8:1197:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1198:8:1198:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1201:8:1201:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1203:8:1203:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1204:8:1204:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1205:8:1205:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1180:8:1180:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1183:18:1183:20 | call to CStringT | atl.cpp:1184:3:1184:5 | s21 | | -| atl.cpp:1183:18:1183:20 | call to CStringT | atl.cpp:1185:8:1185:10 | s21 | | -| atl.cpp:1183:18:1183:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s21 | | -| atl.cpp:1184:3:1184:5 | ref arg s21 | atl.cpp:1185:8:1185:10 | s21 | | -| atl.cpp:1184:3:1184:5 | ref arg s21 | atl.cpp:1212:1:1212:1 | s21 | | -| atl.cpp:1187:18:1187:20 | call to CStringT | atl.cpp:1188:3:1188:5 | s22 | | -| atl.cpp:1187:18:1187:20 | call to CStringT | atl.cpp:1189:8:1189:10 | s22 | | -| atl.cpp:1187:18:1187:20 | call to CStringT | atl.cpp:1212:1:1212:1 | s22 | | -| atl.cpp:1188:3:1188:5 | ref arg s22 | atl.cpp:1189:8:1189:10 | s22 | | -| atl.cpp:1188:3:1188:5 | ref arg s22 | atl.cpp:1212:1:1212:1 | s22 | | -| atl.cpp:1193:8:1193:12 | bstr2 | atl.cpp:1194:20:1194:24 | bstr2 | | -| atl.cpp:1193:8:1193:12 | bstr2 | atl.cpp:1195:8:1195:12 | bstr2 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1197:8:1197:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1198:8:1198:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1201:8:1201:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1203:8:1203:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1204:8:1204:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1205:8:1205:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1194:3:1194:4 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1194:19:1194:24 | ref arg & ... | atl.cpp:1194:20:1194:24 | bstr2 [inner post update] | | -| atl.cpp:1194:19:1194:24 | ref arg & ... | atl.cpp:1195:8:1195:12 | bstr2 | | -| atl.cpp:1194:20:1194:24 | bstr2 | atl.cpp:1194:19:1194:24 | & ... | | -| atl.cpp:1200:14:1200:15 | 0 | atl.cpp:1201:27:1201:31 | start | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1204:8:1204:9 | s1 | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1205:8:1205:9 | s1 | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1203:8:1203:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1204:8:1204:9 | ref arg s1 | atl.cpp:1205:8:1205:9 | s1 | | -| atl.cpp:1204:8:1204:9 | ref arg s1 | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1204:8:1204:9 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1204:8:1204:9 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1204:8:1204:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1204:8:1204:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1204:8:1204:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1204:8:1204:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1205:8:1205:9 | ref arg s1 | atl.cpp:1206:8:1206:9 | s1 | | -| atl.cpp:1205:8:1205:9 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1205:8:1205:9 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1205:8:1205:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1205:8:1205:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1205:8:1205:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1205:8:1205:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1206:8:1206:9 | ref arg s1 | atl.cpp:1207:8:1207:9 | s1 | | -| atl.cpp:1206:8:1206:9 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1206:8:1206:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1206:8:1206:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1206:8:1206:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1206:8:1206:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1207:8:1207:9 | ref arg s1 | atl.cpp:1208:8:1208:9 | s1 | | -| atl.cpp:1207:8:1207:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1207:8:1207:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1207:8:1207:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1207:8:1207:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1208:8:1208:9 | ref arg s1 | atl.cpp:1209:8:1209:9 | s1 | | -| atl.cpp:1208:8:1208:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1208:8:1208:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1208:8:1208:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1209:8:1209:9 | ref arg s1 | atl.cpp:1210:8:1210:9 | s1 | | -| atl.cpp:1209:8:1209:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1209:8:1209:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1210:8:1210:9 | ref arg s1 | atl.cpp:1211:8:1211:9 | s1 | | -| atl.cpp:1210:8:1210:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1211:8:1211:9 | ref arg s1 | atl.cpp:1212:1:1212:1 | s1 | | -| atl.cpp:1219:19:1219:37 | call to source | atl.cpp:1220:8:1220:8 | d | | -| atl.cpp:1238:22:1238:43 | call to source | atl.cpp:1239:20:1239:20 | s | | -| atl.cpp:1238:22:1238:43 | call to source | atl.cpp:1242:1:1242:1 | s | | -| atl.cpp:1239:20:1239:20 | ref arg s | atl.cpp:1242:1:1242:1 | s | | -| atl.cpp:1239:20:1239:28 | call to CStrBufT | atl.cpp:1240:44:1240:44 | b | | -| atl.cpp:1239:20:1239:28 | call to CStrBufT | atl.cpp:1241:43:1241:43 | b | | -| atl.cpp:1240:44:1240:44 | ref arg b | atl.cpp:1241:43:1241:43 | b | | +| atl.cpp:41:31:41:31 | 1 | atl.cpp:41:30:41:31 | - ... | TAINT | +| atl.cpp:79:16:79:27 | call to source | atl.cpp:80:23:80:23 | x | | +| atl.cpp:80:23:80:23 | x | atl.cpp:80:23:80:24 | call to _U_STRINGorID | TAINT | +| atl.cpp:80:23:80:24 | call to _U_STRINGorID | atl.cpp:81:12:81:12 | u | | +| atl.cpp:85:19:85:45 | call to indirect_source | atl.cpp:86:23:86:23 | y | | +| atl.cpp:86:23:86:23 | y | atl.cpp:86:23:86:24 | call to _U_STRINGorID | TAINT | +| atl.cpp:86:23:86:24 | call to _U_STRINGorID | atl.cpp:87:12:87:12 | u | | +| atl.cpp:106:17:106:37 | call to indirect_source | atl.cpp:107:21:107:21 | x | | +| atl.cpp:107:21:107:21 | x | atl.cpp:107:21:107:22 | call to CA2AEX | TAINT | +| atl.cpp:107:21:107:22 | call to CA2AEX | atl.cpp:108:31:108:31 | a | | +| atl.cpp:107:21:107:22 | call to CA2AEX | atl.cpp:109:12:109:12 | a | | +| atl.cpp:107:21:107:22 | call to CA2AEX | atl.cpp:110:12:110:12 | a | | +| atl.cpp:107:21:107:22 | call to CA2AEX | atl.cpp:111:5:111:5 | a | | +| atl.cpp:108:31:108:31 | ref arg a | atl.cpp:109:12:109:12 | a | | +| atl.cpp:108:31:108:31 | ref arg a | atl.cpp:110:12:110:12 | a | | +| atl.cpp:108:31:108:31 | ref arg a | atl.cpp:111:5:111:5 | a | | +| atl.cpp:109:12:109:12 | a [post update] | atl.cpp:110:12:110:12 | a | | +| atl.cpp:109:12:109:12 | a [post update] | atl.cpp:111:5:111:5 | a | | +| atl.cpp:110:12:110:12 | a [post update] | atl.cpp:111:5:111:5 | a | | +| atl.cpp:114:17:114:37 | call to indirect_source | atl.cpp:115:21:115:21 | x | | +| atl.cpp:115:21:115:25 | call to CA2AEX | atl.cpp:116:31:116:31 | a | | +| atl.cpp:115:21:115:25 | call to CA2AEX | atl.cpp:117:12:117:12 | a | | +| atl.cpp:115:21:115:25 | call to CA2AEX | atl.cpp:118:12:118:12 | a | | +| atl.cpp:115:21:115:25 | call to CA2AEX | atl.cpp:119:5:119:5 | a | | +| atl.cpp:116:31:116:31 | ref arg a | atl.cpp:117:12:117:12 | a | | +| atl.cpp:116:31:116:31 | ref arg a | atl.cpp:118:12:118:12 | a | | +| atl.cpp:116:31:116:31 | ref arg a | atl.cpp:119:5:119:5 | a | | +| atl.cpp:117:12:117:12 | a [post update] | atl.cpp:118:12:118:12 | a | | +| atl.cpp:117:12:117:12 | a [post update] | atl.cpp:119:5:119:5 | a | | +| atl.cpp:118:12:118:12 | a [post update] | atl.cpp:119:5:119:5 | a | | +| atl.cpp:132:16:132:36 | call to indirect_source | atl.cpp:134:22:134:22 | x | | +| atl.cpp:132:16:132:36 | call to indirect_source | atl.cpp:140:22:140:22 | x | | +| atl.cpp:134:22:134:22 | x | atl.cpp:134:22:134:23 | call to CA2CAEX | TAINT | +| atl.cpp:134:22:134:23 | call to CA2CAEX | atl.cpp:135:32:135:32 | a | | +| atl.cpp:134:22:134:23 | call to CA2CAEX | atl.cpp:136:12:136:12 | a | | +| atl.cpp:134:22:134:23 | call to CA2CAEX | atl.cpp:137:12:137:12 | a | | +| atl.cpp:134:22:134:23 | call to CA2CAEX | atl.cpp:138:5:138:5 | a | | +| atl.cpp:140:22:140:26 | call to CA2CAEX | atl.cpp:141:32:141:32 | a | | +| atl.cpp:140:22:140:26 | call to CA2CAEX | atl.cpp:142:12:142:12 | a | | +| atl.cpp:140:22:140:26 | call to CA2CAEX | atl.cpp:143:12:143:12 | a | | +| atl.cpp:140:22:140:26 | call to CA2CAEX | atl.cpp:144:5:144:5 | a | | +| atl.cpp:158:16:158:36 | call to indirect_source | atl.cpp:160:21:160:21 | x | | +| atl.cpp:158:16:158:36 | call to indirect_source | atl.cpp:166:21:166:21 | x | | +| atl.cpp:160:21:160:21 | x | atl.cpp:160:21:160:22 | call to CA2WEX | TAINT | +| atl.cpp:160:21:160:22 | call to CA2WEX | atl.cpp:161:32:161:32 | a | | +| atl.cpp:160:21:160:22 | call to CA2WEX | atl.cpp:162:12:162:12 | a | | +| atl.cpp:160:21:160:22 | call to CA2WEX | atl.cpp:163:12:163:12 | a | | +| atl.cpp:160:21:160:22 | call to CA2WEX | atl.cpp:164:5:164:5 | a | | +| atl.cpp:161:32:161:32 | ref arg a | atl.cpp:162:12:162:12 | a | | +| atl.cpp:161:32:161:32 | ref arg a | atl.cpp:163:12:163:12 | a | | +| atl.cpp:161:32:161:32 | ref arg a | atl.cpp:164:5:164:5 | a | | +| atl.cpp:162:12:162:12 | a [post update] | atl.cpp:163:12:163:12 | a | | +| atl.cpp:162:12:162:12 | a [post update] | atl.cpp:164:5:164:5 | a | | +| atl.cpp:162:14:162:18 | ref arg m_psz | atl.cpp:163:14:163:18 | m_psz | | +| atl.cpp:163:12:163:12 | a [post update] | atl.cpp:164:5:164:5 | a | | +| atl.cpp:166:21:166:25 | call to CA2WEX | atl.cpp:167:32:167:32 | a | | +| atl.cpp:166:21:166:25 | call to CA2WEX | atl.cpp:168:12:168:12 | a | | +| atl.cpp:166:21:166:25 | call to CA2WEX | atl.cpp:169:12:169:12 | a | | +| atl.cpp:166:21:166:25 | call to CA2WEX | atl.cpp:170:5:170:5 | a | | +| atl.cpp:167:32:167:32 | ref arg a | atl.cpp:168:12:168:12 | a | | +| atl.cpp:167:32:167:32 | ref arg a | atl.cpp:169:12:169:12 | a | | +| atl.cpp:167:32:167:32 | ref arg a | atl.cpp:170:5:170:5 | a | | +| atl.cpp:168:12:168:12 | a [post update] | atl.cpp:169:12:169:12 | a | | +| atl.cpp:168:12:168:12 | a [post update] | atl.cpp:170:5:170:5 | a | | +| atl.cpp:168:14:168:18 | ref arg m_psz | atl.cpp:169:14:169:18 | m_psz | | +| atl.cpp:169:12:169:12 | a [post update] | atl.cpp:170:5:170:5 | a | | +| atl.cpp:218:13:218:23 | call to source | atl.cpp:222:13:222:13 | x | | +| atl.cpp:221:22:221:22 | call to CAtlArray | atl.cpp:222:7:222:7 | a | | +| atl.cpp:221:22:221:22 | call to CAtlArray | atl.cpp:223:12:223:12 | a | | +| atl.cpp:221:22:221:22 | call to CAtlArray | atl.cpp:224:7:224:7 | a | | +| atl.cpp:221:22:221:22 | call to CAtlArray | atl.cpp:225:12:225:12 | a | | +| atl.cpp:221:22:221:22 | call to CAtlArray | atl.cpp:229:17:229:17 | a | | +| atl.cpp:221:22:221:22 | call to CAtlArray | atl.cpp:244:5:244:5 | a | | +| atl.cpp:222:7:222:7 | ref arg a | atl.cpp:223:12:223:12 | a | | +| atl.cpp:222:7:222:7 | ref arg a | atl.cpp:224:7:224:7 | a | | +| atl.cpp:222:7:222:7 | ref arg a | atl.cpp:225:12:225:12 | a | | +| atl.cpp:222:7:222:7 | ref arg a | atl.cpp:229:17:229:17 | a | | +| atl.cpp:222:7:222:7 | ref arg a | atl.cpp:244:5:244:5 | a | | +| atl.cpp:223:12:223:12 | ref arg a | atl.cpp:224:7:224:7 | a | | +| atl.cpp:223:12:223:12 | ref arg a | atl.cpp:225:12:225:12 | a | | +| atl.cpp:223:12:223:12 | ref arg a | atl.cpp:229:17:229:17 | a | | +| atl.cpp:223:12:223:12 | ref arg a | atl.cpp:244:5:244:5 | a | | +| atl.cpp:224:7:224:7 | ref arg a | atl.cpp:225:12:225:12 | a | | +| atl.cpp:224:7:224:7 | ref arg a | atl.cpp:229:17:229:17 | a | | +| atl.cpp:224:7:224:7 | ref arg a | atl.cpp:244:5:244:5 | a | | +| atl.cpp:225:12:225:12 | ref arg a | atl.cpp:229:17:229:17 | a | | +| atl.cpp:225:12:225:12 | ref arg a | atl.cpp:244:5:244:5 | a | | +| atl.cpp:227:22:227:23 | call to CAtlArray | atl.cpp:228:12:228:13 | a2 | | +| atl.cpp:227:22:227:23 | call to CAtlArray | atl.cpp:229:7:229:8 | a2 | | +| atl.cpp:227:22:227:23 | call to CAtlArray | atl.cpp:230:12:230:13 | a2 | | +| atl.cpp:227:22:227:23 | call to CAtlArray | atl.cpp:234:15:234:16 | a2 | | +| atl.cpp:227:22:227:23 | call to CAtlArray | atl.cpp:244:5:244:5 | a2 | | +| atl.cpp:228:12:228:13 | ref arg a2 | atl.cpp:229:7:229:8 | a2 | | +| atl.cpp:228:12:228:13 | ref arg a2 | atl.cpp:230:12:230:13 | a2 | | +| atl.cpp:228:12:228:13 | ref arg a2 | atl.cpp:234:15:234:16 | a2 | | +| atl.cpp:228:12:228:13 | ref arg a2 | atl.cpp:244:5:244:5 | a2 | | +| atl.cpp:229:7:229:8 | ref arg a2 | atl.cpp:230:12:230:13 | a2 | | +| atl.cpp:229:7:229:8 | ref arg a2 | atl.cpp:234:15:234:16 | a2 | | +| atl.cpp:229:7:229:8 | ref arg a2 | atl.cpp:244:5:244:5 | a2 | | +| atl.cpp:230:12:230:13 | ref arg a2 | atl.cpp:234:15:234:16 | a2 | | +| atl.cpp:230:12:230:13 | ref arg a2 | atl.cpp:244:5:244:5 | a2 | | +| atl.cpp:232:22:232:23 | call to CAtlArray | atl.cpp:233:12:233:13 | a3 | | +| atl.cpp:232:22:232:23 | call to CAtlArray | atl.cpp:234:7:234:8 | a3 | | +| atl.cpp:232:22:232:23 | call to CAtlArray | atl.cpp:235:12:235:13 | a3 | | +| atl.cpp:232:22:232:23 | call to CAtlArray | atl.cpp:237:12:237:13 | a3 | | +| atl.cpp:232:22:232:23 | call to CAtlArray | atl.cpp:238:13:238:14 | a3 | | +| atl.cpp:232:22:232:23 | call to CAtlArray | atl.cpp:242:28:242:29 | a3 | | +| atl.cpp:232:22:232:23 | call to CAtlArray | atl.cpp:244:5:244:5 | a3 | | +| atl.cpp:233:12:233:13 | ref arg a3 | atl.cpp:234:7:234:8 | a3 | | +| atl.cpp:233:12:233:13 | ref arg a3 | atl.cpp:235:12:235:13 | a3 | | +| atl.cpp:233:12:233:13 | ref arg a3 | atl.cpp:237:12:237:13 | a3 | | +| atl.cpp:233:12:233:13 | ref arg a3 | atl.cpp:238:13:238:14 | a3 | | +| atl.cpp:233:12:233:13 | ref arg a3 | atl.cpp:242:28:242:29 | a3 | | +| atl.cpp:233:12:233:13 | ref arg a3 | atl.cpp:244:5:244:5 | a3 | | +| atl.cpp:234:7:234:8 | ref arg a3 | atl.cpp:235:12:235:13 | a3 | | +| atl.cpp:234:7:234:8 | ref arg a3 | atl.cpp:237:12:237:13 | a3 | | +| atl.cpp:234:7:234:8 | ref arg a3 | atl.cpp:238:13:238:14 | a3 | | +| atl.cpp:234:7:234:8 | ref arg a3 | atl.cpp:242:28:242:29 | a3 | | +| atl.cpp:234:7:234:8 | ref arg a3 | atl.cpp:244:5:244:5 | a3 | | +| atl.cpp:235:12:235:13 | ref arg a3 | atl.cpp:237:12:237:13 | a3 | | +| atl.cpp:235:12:235:13 | ref arg a3 | atl.cpp:238:13:238:14 | a3 | | +| atl.cpp:235:12:235:13 | ref arg a3 | atl.cpp:242:28:242:29 | a3 | | +| atl.cpp:235:12:235:13 | ref arg a3 | atl.cpp:244:5:244:5 | a3 | | +| atl.cpp:237:12:237:13 | ref arg a3 | atl.cpp:238:13:238:14 | a3 | | +| atl.cpp:237:12:237:13 | ref arg a3 | atl.cpp:242:28:242:29 | a3 | | +| atl.cpp:237:12:237:13 | ref arg a3 | atl.cpp:244:5:244:5 | a3 | | +| atl.cpp:238:13:238:14 | ref arg a3 | atl.cpp:242:28:242:29 | a3 | | +| atl.cpp:238:13:238:14 | ref arg a3 | atl.cpp:244:5:244:5 | a3 | | +| atl.cpp:238:16:238:22 | call to GetData | atl.cpp:238:12:238:24 | * ... | TAINT | +| atl.cpp:240:22:240:23 | call to CAtlArray | atl.cpp:241:12:241:13 | a4 | | +| atl.cpp:240:22:240:23 | call to CAtlArray | atl.cpp:242:7:242:8 | a4 | | +| atl.cpp:240:22:240:23 | call to CAtlArray | atl.cpp:243:12:243:13 | a4 | | +| atl.cpp:240:22:240:23 | call to CAtlArray | atl.cpp:244:5:244:5 | a4 | | +| atl.cpp:241:12:241:13 | ref arg a4 | atl.cpp:242:7:242:8 | a4 | | +| atl.cpp:241:12:241:13 | ref arg a4 | atl.cpp:243:12:243:13 | a4 | | +| atl.cpp:241:12:241:13 | ref arg a4 | atl.cpp:244:5:244:5 | a4 | | +| atl.cpp:242:7:242:8 | ref arg a4 | atl.cpp:243:12:243:13 | a4 | | +| atl.cpp:242:7:242:8 | ref arg a4 | atl.cpp:244:5:244:5 | a4 | | +| atl.cpp:242:28:242:29 | a3 | atl.cpp:242:27:242:29 | & ... | | +| atl.cpp:243:12:243:13 | ref arg a4 | atl.cpp:244:5:244:5 | a4 | | +| atl.cpp:246:22:246:23 | call to CAtlArray | atl.cpp:247:7:247:8 | a5 | | +| atl.cpp:246:22:246:23 | call to CAtlArray | atl.cpp:248:12:248:13 | a5 | | +| atl.cpp:246:22:246:23 | call to CAtlArray | atl.cpp:253:5:253:5 | a5 | | +| atl.cpp:247:7:247:8 | ref arg a5 | atl.cpp:248:12:248:13 | a5 | | +| atl.cpp:247:7:247:8 | ref arg a5 | atl.cpp:253:5:253:5 | a5 | | +| atl.cpp:248:12:248:13 | ref arg a5 | atl.cpp:253:5:253:5 | a5 | | +| atl.cpp:250:22:250:23 | call to CAtlArray | atl.cpp:251:7:251:8 | a6 | | +| atl.cpp:250:22:250:23 | call to CAtlArray | atl.cpp:252:12:252:13 | a6 | | +| atl.cpp:250:22:250:23 | call to CAtlArray | atl.cpp:253:5:253:5 | a6 | | +| atl.cpp:251:7:251:8 | ref arg a6 | atl.cpp:252:12:252:13 | a6 | | +| atl.cpp:251:7:251:8 | ref arg a6 | atl.cpp:253:5:253:5 | a6 | | +| atl.cpp:252:12:252:13 | ref arg a6 | atl.cpp:253:5:253:5 | a6 | | +| atl.cpp:298:13:298:23 | call to source | atl.cpp:302:20:302:20 | x | | +| atl.cpp:298:13:298:23 | call to source | atl.cpp:310:21:310:21 | x | | +| atl.cpp:298:13:298:23 | call to source | atl.cpp:319:31:319:31 | x | | +| atl.cpp:298:13:298:23 | call to source | atl.cpp:325:23:325:23 | x | | +| atl.cpp:298:13:298:23 | call to source | atl.cpp:333:32:333:32 | x | | +| atl.cpp:298:13:298:23 | call to source | atl.cpp:340:33:340:33 | x | | +| atl.cpp:298:13:298:23 | call to source | atl.cpp:345:46:345:46 | x | | +| atl.cpp:300:26:300:27 | 10 | atl.cpp:300:26:300:28 | call to CAtlList | TAINT | +| atl.cpp:300:26:300:28 | call to CAtlList | atl.cpp:301:12:301:15 | list | | +| atl.cpp:300:26:300:28 | call to CAtlList | atl.cpp:302:7:302:10 | list | | +| atl.cpp:300:26:300:28 | call to CAtlList | atl.cpp:303:12:303:15 | list | | +| atl.cpp:300:26:300:28 | call to CAtlList | atl.cpp:306:26:306:29 | list | | +| atl.cpp:300:26:300:28 | call to CAtlList | atl.cpp:348:5:348:5 | list | | +| atl.cpp:301:12:301:15 | ref arg list | atl.cpp:302:7:302:10 | list | | +| atl.cpp:301:12:301:15 | ref arg list | atl.cpp:303:12:303:15 | list | | +| atl.cpp:301:12:301:15 | ref arg list | atl.cpp:306:26:306:29 | list | | +| atl.cpp:301:12:301:15 | ref arg list | atl.cpp:348:5:348:5 | list | | +| atl.cpp:302:7:302:10 | ref arg list | atl.cpp:303:12:303:15 | list | | +| atl.cpp:302:7:302:10 | ref arg list | atl.cpp:306:26:306:29 | list | | +| atl.cpp:302:7:302:10 | ref arg list | atl.cpp:348:5:348:5 | list | | +| atl.cpp:303:12:303:15 | ref arg list | atl.cpp:306:26:306:29 | list | | +| atl.cpp:303:12:303:15 | ref arg list | atl.cpp:348:5:348:5 | list | | +| atl.cpp:305:27:305:28 | 10 | atl.cpp:305:27:305:29 | call to CAtlList | TAINT | +| atl.cpp:305:27:305:29 | call to CAtlList | atl.cpp:306:7:306:11 | list2 | | +| atl.cpp:305:27:305:29 | call to CAtlList | atl.cpp:307:12:307:16 | list2 | | +| atl.cpp:305:27:305:29 | call to CAtlList | atl.cpp:348:5:348:5 | list2 | | +| atl.cpp:306:7:306:11 | ref arg list2 | atl.cpp:307:12:307:16 | list2 | | +| atl.cpp:306:7:306:11 | ref arg list2 | atl.cpp:348:5:348:5 | list2 | | +| atl.cpp:306:26:306:29 | list | atl.cpp:306:25:306:29 | & ... | | +| atl.cpp:307:12:307:16 | ref arg list2 | atl.cpp:348:5:348:5 | list2 | | +| atl.cpp:309:27:309:28 | 10 | atl.cpp:309:27:309:29 | call to CAtlList | TAINT | +| atl.cpp:309:27:309:29 | call to CAtlList | atl.cpp:310:7:310:11 | list3 | | +| atl.cpp:309:27:309:29 | call to CAtlList | atl.cpp:311:12:311:16 | list3 | | +| atl.cpp:309:27:309:29 | call to CAtlList | atl.cpp:314:26:314:30 | list3 | | +| atl.cpp:309:27:309:29 | call to CAtlList | atl.cpp:348:5:348:5 | list3 | | +| atl.cpp:310:7:310:11 | ref arg list3 | atl.cpp:311:12:311:16 | list3 | | +| atl.cpp:310:7:310:11 | ref arg list3 | atl.cpp:314:26:314:30 | list3 | | +| atl.cpp:310:7:310:11 | ref arg list3 | atl.cpp:348:5:348:5 | list3 | | +| atl.cpp:311:12:311:16 | ref arg list3 | atl.cpp:314:26:314:30 | list3 | | +| atl.cpp:311:12:311:16 | ref arg list3 | atl.cpp:348:5:348:5 | list3 | | +| atl.cpp:313:27:313:28 | 10 | atl.cpp:313:27:313:29 | call to CAtlList | TAINT | +| atl.cpp:313:27:313:29 | call to CAtlList | atl.cpp:314:7:314:11 | list4 | | +| atl.cpp:313:27:313:29 | call to CAtlList | atl.cpp:315:12:315:16 | list4 | | +| atl.cpp:313:27:313:29 | call to CAtlList | atl.cpp:348:5:348:5 | list4 | | +| atl.cpp:314:7:314:11 | ref arg list4 | atl.cpp:315:12:315:16 | list4 | | +| atl.cpp:314:7:314:11 | ref arg list4 | atl.cpp:348:5:348:5 | list4 | | +| atl.cpp:314:26:314:30 | list3 | atl.cpp:314:25:314:30 | & ... | | +| atl.cpp:315:12:315:16 | ref arg list4 | atl.cpp:348:5:348:5 | list4 | | +| atl.cpp:318:29:318:30 | 10 | atl.cpp:318:29:318:31 | call to CAtlList | TAINT | +| atl.cpp:318:29:318:31 | call to CAtlList | atl.cpp:319:20:319:24 | list5 | | +| atl.cpp:318:29:318:31 | call to CAtlList | atl.cpp:319:34:319:38 | list5 | | +| atl.cpp:318:29:318:31 | call to CAtlList | atl.cpp:320:14:320:18 | list5 | | +| atl.cpp:318:29:318:31 | call to CAtlList | atl.cpp:321:7:321:7 | list5 | | +| atl.cpp:319:20:319:24 | ref arg list5 | atl.cpp:320:14:320:18 | list5 | | +| atl.cpp:319:20:319:24 | ref arg list5 | atl.cpp:321:7:321:7 | list5 | | +| atl.cpp:319:26:319:29 | call to Find | atl.cpp:320:26:320:28 | pos | | +| atl.cpp:319:34:319:38 | ref arg list5 | atl.cpp:319:20:319:24 | list5 | | +| atl.cpp:319:34:319:38 | ref arg list5 | atl.cpp:320:14:320:18 | list5 | | +| atl.cpp:319:34:319:38 | ref arg list5 | atl.cpp:321:7:321:7 | list5 | | +| atl.cpp:320:14:320:18 | ref arg list5 | atl.cpp:321:7:321:7 | list5 | | +| atl.cpp:324:29:324:30 | 10 | atl.cpp:324:29:324:31 | call to CAtlList | TAINT | +| atl.cpp:324:29:324:31 | call to CAtlList | atl.cpp:325:9:325:13 | list6 | | +| atl.cpp:324:29:324:31 | call to CAtlList | atl.cpp:326:20:326:24 | list6 | | +| atl.cpp:324:29:324:31 | call to CAtlList | atl.cpp:327:14:327:18 | list6 | | +| atl.cpp:324:29:324:31 | call to CAtlList | atl.cpp:328:7:328:7 | list6 | | +| atl.cpp:325:9:325:13 | ref arg list6 | atl.cpp:326:20:326:24 | list6 | | +| atl.cpp:325:9:325:13 | ref arg list6 | atl.cpp:327:14:327:18 | list6 | | +| atl.cpp:325:9:325:13 | ref arg list6 | atl.cpp:328:7:328:7 | list6 | | +| atl.cpp:326:20:326:24 | ref arg list6 | atl.cpp:327:14:327:18 | list6 | | +| atl.cpp:326:20:326:24 | ref arg list6 | atl.cpp:328:7:328:7 | list6 | | +| atl.cpp:326:26:326:34 | call to FindIndex | atl.cpp:327:26:327:28 | pos | | +| atl.cpp:327:14:327:18 | ref arg list6 | atl.cpp:328:7:328:7 | list6 | | +| atl.cpp:331:29:331:30 | 10 | atl.cpp:331:29:331:31 | call to CAtlList | TAINT | +| atl.cpp:331:29:331:31 | call to CAtlList | atl.cpp:332:20:332:24 | list7 | | +| atl.cpp:331:29:331:31 | call to CAtlList | atl.cpp:333:9:333:13 | list7 | | +| atl.cpp:331:29:331:31 | call to CAtlList | atl.cpp:334:14:334:18 | list7 | | +| atl.cpp:331:29:331:31 | call to CAtlList | atl.cpp:335:7:335:7 | list7 | | +| atl.cpp:332:20:332:24 | ref arg list7 | atl.cpp:333:9:333:13 | list7 | | +| atl.cpp:332:20:332:24 | ref arg list7 | atl.cpp:334:14:334:18 | list7 | | +| atl.cpp:332:20:332:24 | ref arg list7 | atl.cpp:335:7:335:7 | list7 | | +| atl.cpp:332:26:332:40 | call to GetTailPosition | atl.cpp:333:27:333:29 | pos | | +| atl.cpp:333:9:333:13 | ref arg list7 | atl.cpp:334:14:334:18 | list7 | | +| atl.cpp:333:9:333:13 | ref arg list7 | atl.cpp:335:7:335:7 | list7 | | +| atl.cpp:334:14:334:18 | ref arg list7 | atl.cpp:335:7:335:7 | list7 | | +| atl.cpp:338:29:338:30 | 10 | atl.cpp:338:29:338:31 | call to CAtlList | TAINT | +| atl.cpp:338:29:338:31 | call to CAtlList | atl.cpp:339:20:339:24 | list8 | | +| atl.cpp:338:29:338:31 | call to CAtlList | atl.cpp:340:9:340:13 | list8 | | +| atl.cpp:338:29:338:31 | call to CAtlList | atl.cpp:341:14:341:18 | list8 | | +| atl.cpp:338:29:338:31 | call to CAtlList | atl.cpp:342:7:342:7 | list8 | | +| atl.cpp:339:20:339:24 | ref arg list8 | atl.cpp:340:9:340:13 | list8 | | +| atl.cpp:339:20:339:24 | ref arg list8 | atl.cpp:341:14:341:18 | list8 | | +| atl.cpp:339:20:339:24 | ref arg list8 | atl.cpp:342:7:342:7 | list8 | | +| atl.cpp:339:26:339:40 | call to GetTailPosition | atl.cpp:340:28:340:30 | pos | | +| atl.cpp:340:9:340:13 | ref arg list8 | atl.cpp:341:14:341:18 | list8 | | +| atl.cpp:340:9:340:13 | ref arg list8 | atl.cpp:342:7:342:7 | list8 | | +| atl.cpp:341:14:341:18 | ref arg list8 | atl.cpp:342:7:342:7 | list8 | | +| atl.cpp:344:29:344:30 | 10 | atl.cpp:344:29:344:31 | call to CAtlList | TAINT | +| atl.cpp:344:29:344:31 | call to CAtlList | atl.cpp:345:9:345:13 | list9 | | +| atl.cpp:344:29:344:31 | call to CAtlList | atl.cpp:345:21:345:25 | list9 | | +| atl.cpp:344:29:344:31 | call to CAtlList | atl.cpp:346:14:346:18 | list9 | | +| atl.cpp:344:29:344:31 | call to CAtlList | atl.cpp:347:7:347:7 | list9 | | +| atl.cpp:345:9:345:13 | ref arg list9 | atl.cpp:346:14:346:18 | list9 | | +| atl.cpp:345:9:345:13 | ref arg list9 | atl.cpp:347:7:347:7 | list9 | | +| atl.cpp:345:21:345:25 | ref arg list9 | atl.cpp:345:9:345:13 | list9 | | +| atl.cpp:345:21:345:25 | ref arg list9 | atl.cpp:346:14:346:18 | list9 | | +| atl.cpp:345:21:345:25 | ref arg list9 | atl.cpp:347:7:347:7 | list9 | | +| atl.cpp:346:14:346:18 | ref arg list9 | atl.cpp:347:7:347:7 | list9 | | +| atl.cpp:350:14:350:33 | call to indirect_source | atl.cpp:354:20:354:20 | p | | +| atl.cpp:350:14:350:33 | call to indirect_source | atl.cpp:362:21:362:21 | p | | +| atl.cpp:350:14:350:33 | call to indirect_source | atl.cpp:371:31:371:31 | p | | +| atl.cpp:350:14:350:33 | call to indirect_source | atl.cpp:377:23:377:23 | p | | +| atl.cpp:350:14:350:33 | call to indirect_source | atl.cpp:385:32:385:32 | p | | +| atl.cpp:350:14:350:33 | call to indirect_source | atl.cpp:392:33:392:33 | p | | +| atl.cpp:350:14:350:33 | call to indirect_source | atl.cpp:397:46:397:46 | p | | +| atl.cpp:352:27:352:28 | 10 | atl.cpp:352:27:352:29 | call to CAtlList | TAINT | +| atl.cpp:352:27:352:29 | call to CAtlList | atl.cpp:353:12:353:15 | list | | +| atl.cpp:352:27:352:29 | call to CAtlList | atl.cpp:354:7:354:10 | list | | +| atl.cpp:352:27:352:29 | call to CAtlList | atl.cpp:355:12:355:15 | list | | +| atl.cpp:352:27:352:29 | call to CAtlList | atl.cpp:358:26:358:29 | list | | +| atl.cpp:352:27:352:29 | call to CAtlList | atl.cpp:400:5:400:5 | list | | +| atl.cpp:353:12:353:15 | ref arg list | atl.cpp:354:7:354:10 | list | | +| atl.cpp:353:12:353:15 | ref arg list | atl.cpp:355:12:355:15 | list | | +| atl.cpp:353:12:353:15 | ref arg list | atl.cpp:358:26:358:29 | list | | +| atl.cpp:353:12:353:15 | ref arg list | atl.cpp:400:5:400:5 | list | | +| atl.cpp:354:7:354:10 | ref arg list | atl.cpp:355:12:355:15 | list | | +| atl.cpp:354:7:354:10 | ref arg list | atl.cpp:358:26:358:29 | list | | +| atl.cpp:354:7:354:10 | ref arg list | atl.cpp:400:5:400:5 | list | | +| atl.cpp:355:12:355:15 | ref arg list | atl.cpp:358:26:358:29 | list | | +| atl.cpp:355:12:355:15 | ref arg list | atl.cpp:400:5:400:5 | list | | +| atl.cpp:357:28:357:29 | 10 | atl.cpp:357:28:357:30 | call to CAtlList | TAINT | +| atl.cpp:357:28:357:30 | call to CAtlList | atl.cpp:358:7:358:11 | list2 | | +| atl.cpp:357:28:357:30 | call to CAtlList | atl.cpp:359:12:359:16 | list2 | | +| atl.cpp:357:28:357:30 | call to CAtlList | atl.cpp:400:5:400:5 | list2 | | +| atl.cpp:358:7:358:11 | ref arg list2 | atl.cpp:359:12:359:16 | list2 | | +| atl.cpp:358:7:358:11 | ref arg list2 | atl.cpp:400:5:400:5 | list2 | | +| atl.cpp:358:26:358:29 | list | atl.cpp:358:25:358:29 | & ... | | +| atl.cpp:359:12:359:16 | ref arg list2 | atl.cpp:400:5:400:5 | list2 | | +| atl.cpp:361:28:361:29 | 10 | atl.cpp:361:28:361:30 | call to CAtlList | TAINT | +| atl.cpp:361:28:361:30 | call to CAtlList | atl.cpp:362:7:362:11 | list3 | | +| atl.cpp:361:28:361:30 | call to CAtlList | atl.cpp:363:12:363:16 | list3 | | +| atl.cpp:361:28:361:30 | call to CAtlList | atl.cpp:366:26:366:30 | list3 | | +| atl.cpp:361:28:361:30 | call to CAtlList | atl.cpp:400:5:400:5 | list3 | | +| atl.cpp:362:7:362:11 | ref arg list3 | atl.cpp:363:12:363:16 | list3 | | +| atl.cpp:362:7:362:11 | ref arg list3 | atl.cpp:366:26:366:30 | list3 | | +| atl.cpp:362:7:362:11 | ref arg list3 | atl.cpp:400:5:400:5 | list3 | | +| atl.cpp:363:12:363:16 | ref arg list3 | atl.cpp:366:26:366:30 | list3 | | +| atl.cpp:363:12:363:16 | ref arg list3 | atl.cpp:400:5:400:5 | list3 | | +| atl.cpp:365:28:365:29 | 10 | atl.cpp:365:28:365:30 | call to CAtlList | TAINT | +| atl.cpp:365:28:365:30 | call to CAtlList | atl.cpp:366:7:366:11 | list4 | | +| atl.cpp:365:28:365:30 | call to CAtlList | atl.cpp:367:12:367:16 | list4 | | +| atl.cpp:365:28:365:30 | call to CAtlList | atl.cpp:400:5:400:5 | list4 | | +| atl.cpp:366:7:366:11 | ref arg list4 | atl.cpp:367:12:367:16 | list4 | | +| atl.cpp:366:7:366:11 | ref arg list4 | atl.cpp:400:5:400:5 | list4 | | +| atl.cpp:366:26:366:30 | list3 | atl.cpp:366:25:366:30 | & ... | | +| atl.cpp:367:12:367:16 | ref arg list4 | atl.cpp:400:5:400:5 | list4 | | +| atl.cpp:370:30:370:31 | 10 | atl.cpp:370:30:370:32 | call to CAtlList | TAINT | +| atl.cpp:370:30:370:32 | call to CAtlList | atl.cpp:371:20:371:24 | list5 | | +| atl.cpp:370:30:370:32 | call to CAtlList | atl.cpp:371:34:371:38 | list5 | | +| atl.cpp:370:30:370:32 | call to CAtlList | atl.cpp:372:14:372:18 | list5 | | +| atl.cpp:370:30:370:32 | call to CAtlList | atl.cpp:373:7:373:7 | list5 | | +| atl.cpp:371:20:371:24 | ref arg list5 | atl.cpp:372:14:372:18 | list5 | | +| atl.cpp:371:20:371:24 | ref arg list5 | atl.cpp:373:7:373:7 | list5 | | +| atl.cpp:371:26:371:29 | call to Find | atl.cpp:372:26:372:28 | pos | | +| atl.cpp:371:34:371:38 | ref arg list5 | atl.cpp:371:20:371:24 | list5 | | +| atl.cpp:371:34:371:38 | ref arg list5 | atl.cpp:372:14:372:18 | list5 | | +| atl.cpp:371:34:371:38 | ref arg list5 | atl.cpp:373:7:373:7 | list5 | | +| atl.cpp:372:14:372:18 | ref arg list5 | atl.cpp:373:7:373:7 | list5 | | +| atl.cpp:376:30:376:31 | 10 | atl.cpp:376:30:376:32 | call to CAtlList | TAINT | +| atl.cpp:376:30:376:32 | call to CAtlList | atl.cpp:377:9:377:13 | list6 | | +| atl.cpp:376:30:376:32 | call to CAtlList | atl.cpp:378:20:378:24 | list6 | | +| atl.cpp:376:30:376:32 | call to CAtlList | atl.cpp:379:14:379:18 | list6 | | +| atl.cpp:376:30:376:32 | call to CAtlList | atl.cpp:380:7:380:7 | list6 | | +| atl.cpp:377:9:377:13 | ref arg list6 | atl.cpp:378:20:378:24 | list6 | | +| atl.cpp:377:9:377:13 | ref arg list6 | atl.cpp:379:14:379:18 | list6 | | +| atl.cpp:377:9:377:13 | ref arg list6 | atl.cpp:380:7:380:7 | list6 | | +| atl.cpp:378:20:378:24 | ref arg list6 | atl.cpp:379:14:379:18 | list6 | | +| atl.cpp:378:20:378:24 | ref arg list6 | atl.cpp:380:7:380:7 | list6 | | +| atl.cpp:378:26:378:34 | call to FindIndex | atl.cpp:379:26:379:28 | pos | | +| atl.cpp:379:14:379:18 | ref arg list6 | atl.cpp:380:7:380:7 | list6 | | +| atl.cpp:383:30:383:31 | 10 | atl.cpp:383:30:383:32 | call to CAtlList | TAINT | +| atl.cpp:383:30:383:32 | call to CAtlList | atl.cpp:384:20:384:24 | list7 | | +| atl.cpp:383:30:383:32 | call to CAtlList | atl.cpp:385:9:385:13 | list7 | | +| atl.cpp:383:30:383:32 | call to CAtlList | atl.cpp:386:14:386:18 | list7 | | +| atl.cpp:383:30:383:32 | call to CAtlList | atl.cpp:387:7:387:7 | list7 | | +| atl.cpp:384:20:384:24 | ref arg list7 | atl.cpp:385:9:385:13 | list7 | | +| atl.cpp:384:20:384:24 | ref arg list7 | atl.cpp:386:14:386:18 | list7 | | +| atl.cpp:384:20:384:24 | ref arg list7 | atl.cpp:387:7:387:7 | list7 | | +| atl.cpp:384:26:384:40 | call to GetTailPosition | atl.cpp:385:27:385:29 | pos | | +| atl.cpp:385:9:385:13 | ref arg list7 | atl.cpp:386:14:386:18 | list7 | | +| atl.cpp:385:9:385:13 | ref arg list7 | atl.cpp:387:7:387:7 | list7 | | +| atl.cpp:386:14:386:18 | ref arg list7 | atl.cpp:387:7:387:7 | list7 | | +| atl.cpp:390:30:390:31 | 10 | atl.cpp:390:30:390:32 | call to CAtlList | TAINT | +| atl.cpp:390:30:390:32 | call to CAtlList | atl.cpp:391:20:391:24 | list8 | | +| atl.cpp:390:30:390:32 | call to CAtlList | atl.cpp:392:9:392:13 | list8 | | +| atl.cpp:390:30:390:32 | call to CAtlList | atl.cpp:393:14:393:18 | list8 | | +| atl.cpp:390:30:390:32 | call to CAtlList | atl.cpp:394:7:394:7 | list8 | | +| atl.cpp:391:20:391:24 | ref arg list8 | atl.cpp:392:9:392:13 | list8 | | +| atl.cpp:391:20:391:24 | ref arg list8 | atl.cpp:393:14:393:18 | list8 | | +| atl.cpp:391:20:391:24 | ref arg list8 | atl.cpp:394:7:394:7 | list8 | | +| atl.cpp:391:26:391:40 | call to GetTailPosition | atl.cpp:392:28:392:30 | pos | | +| atl.cpp:392:9:392:13 | ref arg list8 | atl.cpp:393:14:393:18 | list8 | | +| atl.cpp:392:9:392:13 | ref arg list8 | atl.cpp:394:7:394:7 | list8 | | +| atl.cpp:393:14:393:18 | ref arg list8 | atl.cpp:394:7:394:7 | list8 | | +| atl.cpp:396:30:396:31 | 10 | atl.cpp:396:30:396:32 | call to CAtlList | TAINT | +| atl.cpp:396:30:396:32 | call to CAtlList | atl.cpp:397:9:397:13 | list9 | | +| atl.cpp:396:30:396:32 | call to CAtlList | atl.cpp:397:21:397:25 | list9 | | +| atl.cpp:396:30:396:32 | call to CAtlList | atl.cpp:398:14:398:18 | list9 | | +| atl.cpp:396:30:396:32 | call to CAtlList | atl.cpp:399:7:399:7 | list9 | | +| atl.cpp:397:9:397:13 | ref arg list9 | atl.cpp:398:14:398:18 | list9 | | +| atl.cpp:397:9:397:13 | ref arg list9 | atl.cpp:399:7:399:7 | list9 | | +| atl.cpp:397:21:397:25 | ref arg list9 | atl.cpp:397:9:397:13 | list9 | | +| atl.cpp:397:21:397:25 | ref arg list9 | atl.cpp:398:14:398:18 | list9 | | +| atl.cpp:397:21:397:25 | ref arg list9 | atl.cpp:399:7:399:7 | list9 | | +| atl.cpp:398:14:398:18 | ref arg list9 | atl.cpp:399:7:399:7 | list9 | | +| atl.cpp:456:23:456:35 | new | atl.cpp:457:5:457:8 | safe | | +| atl.cpp:456:23:456:35 | new | atl.cpp:458:12:458:15 | safe | | +| atl.cpp:457:5:457:8 | safe [post update] | atl.cpp:458:12:458:15 | safe | | +| atl.cpp:457:5:457:42 | ... = ... | atl.cpp:457:11:457:16 | pvData [post update] | | +| atl.cpp:457:20:457:40 | call to indirect_source | atl.cpp:457:5:457:42 | ... = ... | | +| atl.cpp:462:15:462:35 | call to indirect_source | atl.cpp:464:18:464:18 | x | | +| atl.cpp:462:15:462:35 | call to indirect_source | atl.cpp:471:22:471:22 | x | | +| atl.cpp:462:15:462:35 | call to indirect_source | atl.cpp:475:18:475:18 | x | | +| atl.cpp:462:15:462:35 | call to indirect_source | atl.cpp:483:13:483:13 | x | | +| atl.cpp:462:15:462:35 | call to indirect_source | atl.cpp:497:22:497:22 | x | | +| atl.cpp:464:18:464:18 | x | atl.cpp:464:18:464:19 | call to CComBSTR | TAINT | +| atl.cpp:464:18:464:19 | call to CComBSTR | atl.cpp:465:12:465:12 | b | | +| atl.cpp:464:18:464:19 | call to CComBSTR | atl.cpp:467:19:467:19 | b | | +| atl.cpp:464:18:464:19 | call to CComBSTR | atl.cpp:469:5:469:5 | b | | +| atl.cpp:465:12:465:12 | b [post update] | atl.cpp:467:19:467:19 | b | | +| atl.cpp:465:12:465:12 | b [post update] | atl.cpp:469:5:469:5 | b | | +| atl.cpp:465:14:465:18 | ref arg m_str | atl.cpp:468:15:468:19 | m_str | | +| atl.cpp:467:19:467:19 | b | atl.cpp:467:19:467:20 | call to CComBSTR | | +| atl.cpp:467:19:467:20 | call to CComBSTR | atl.cpp:468:12:468:13 | b2 | | +| atl.cpp:467:19:467:20 | call to CComBSTR | atl.cpp:469:5:469:5 | b2 | | +| atl.cpp:468:12:468:13 | b2 [post update] | atl.cpp:469:5:469:5 | b2 | | +| atl.cpp:471:18:471:23 | call to CComBSTR | atl.cpp:472:12:472:12 | b | | +| atl.cpp:471:18:471:23 | call to CComBSTR | atl.cpp:473:5:473:5 | b | | +| atl.cpp:472:12:472:12 | b [post update] | atl.cpp:473:5:473:5 | b | | +| atl.cpp:475:18:475:18 | x | atl.cpp:475:18:475:19 | call to CComBSTR | TAINT | +| atl.cpp:475:18:475:19 | call to CComBSTR | atl.cpp:479:13:479:13 | b | | +| atl.cpp:475:18:475:19 | call to CComBSTR | atl.cpp:515:5:515:5 | b | | +| atl.cpp:477:16:477:17 | call to CComBSTR | atl.cpp:478:12:478:13 | b2 | | +| atl.cpp:477:16:477:17 | call to CComBSTR | atl.cpp:479:7:479:8 | b2 | | +| atl.cpp:477:16:477:17 | call to CComBSTR | atl.cpp:480:12:480:13 | b2 | | +| atl.cpp:477:16:477:17 | call to CComBSTR | atl.cpp:515:5:515:5 | b2 | | +| atl.cpp:478:12:478:13 | b2 [post update] | atl.cpp:479:7:479:8 | b2 | | +| atl.cpp:478:12:478:13 | b2 [post update] | atl.cpp:480:12:480:13 | b2 | | +| atl.cpp:478:12:478:13 | b2 [post update] | atl.cpp:515:5:515:5 | b2 | | +| atl.cpp:478:15:478:19 | ref arg m_str | atl.cpp:480:15:480:19 | m_str | | +| atl.cpp:479:7:479:8 | ref arg b2 | atl.cpp:480:12:480:13 | b2 | | +| atl.cpp:479:7:479:8 | ref arg b2 | atl.cpp:515:5:515:5 | b2 | | +| atl.cpp:480:12:480:13 | b2 [post update] | atl.cpp:515:5:515:5 | b2 | | +| atl.cpp:482:16:482:17 | call to CComBSTR | atl.cpp:483:7:483:8 | b3 | | +| atl.cpp:482:16:482:17 | call to CComBSTR | atl.cpp:484:12:484:13 | b3 | | +| atl.cpp:482:16:482:17 | call to CComBSTR | atl.cpp:485:30:485:31 | b3 | | +| atl.cpp:482:16:482:17 | call to CComBSTR | atl.cpp:486:15:486:16 | b3 | | +| atl.cpp:482:16:482:17 | call to CComBSTR | atl.cpp:515:5:515:5 | b3 | | +| atl.cpp:483:7:483:8 | ref arg b3 | atl.cpp:484:12:484:13 | b3 | | +| atl.cpp:483:7:483:8 | ref arg b3 | atl.cpp:485:30:485:31 | b3 | | +| atl.cpp:483:7:483:8 | ref arg b3 | atl.cpp:486:15:486:16 | b3 | | +| atl.cpp:483:7:483:8 | ref arg b3 | atl.cpp:515:5:515:5 | b3 | | +| atl.cpp:483:13:483:13 | x | atl.cpp:483:13:483:13 | call to CComBSTR | TAINT | +| atl.cpp:484:12:484:13 | b3 [post update] | atl.cpp:485:30:485:31 | b3 | | +| atl.cpp:484:12:484:13 | b3 [post update] | atl.cpp:486:15:486:16 | b3 | | +| atl.cpp:484:12:484:13 | b3 [post update] | atl.cpp:515:5:515:5 | b3 | | +| atl.cpp:485:30:485:31 | ref arg b3 | atl.cpp:486:15:486:16 | b3 | | +| atl.cpp:485:30:485:31 | ref arg b3 | atl.cpp:515:5:515:5 | b3 | | +| atl.cpp:486:13:486:16 | * ... | atl.cpp:486:12:486:16 | * ... | TAINT | +| atl.cpp:486:14:486:14 | call to operator& | atl.cpp:486:13:486:16 | * ... | TAINT | +| atl.cpp:486:15:486:16 | ref arg b3 | atl.cpp:515:5:515:5 | b3 | | +| atl.cpp:488:16:488:17 | call to CComBSTR | atl.cpp:489:7:489:8 | b4 | | +| atl.cpp:488:16:488:17 | call to CComBSTR | atl.cpp:490:12:490:13 | b4 | | +| atl.cpp:488:16:488:17 | call to CComBSTR | atl.cpp:493:21:493:22 | b4 | | +| atl.cpp:488:16:488:17 | call to CComBSTR | atl.cpp:515:5:515:5 | b4 | | +| atl.cpp:489:7:489:8 | ref arg b4 | atl.cpp:490:12:490:13 | b4 | | +| atl.cpp:489:7:489:8 | ref arg b4 | atl.cpp:493:21:493:22 | b4 | | +| atl.cpp:489:7:489:8 | ref arg b4 | atl.cpp:515:5:515:5 | b4 | | +| atl.cpp:490:12:490:13 | b4 [post update] | atl.cpp:493:21:493:22 | b4 | | +| atl.cpp:490:12:490:13 | b4 [post update] | atl.cpp:515:5:515:5 | b4 | | +| atl.cpp:490:15:490:19 | ref arg m_str | atl.cpp:493:24:493:28 | m_str | | +| atl.cpp:492:16:492:17 | call to CComBSTR | atl.cpp:493:7:493:8 | b5 | | +| atl.cpp:492:16:492:17 | call to CComBSTR | atl.cpp:494:12:494:13 | b5 | | +| atl.cpp:492:16:492:17 | call to CComBSTR | atl.cpp:515:5:515:5 | b5 | | +| atl.cpp:493:7:493:8 | ref arg b5 | atl.cpp:494:12:494:13 | b5 | | +| atl.cpp:493:7:493:8 | ref arg b5 | atl.cpp:515:5:515:5 | b5 | | +| atl.cpp:493:21:493:22 | b4 [post update] | atl.cpp:515:5:515:5 | b4 | | +| atl.cpp:494:12:494:13 | b5 [post update] | atl.cpp:515:5:515:5 | b5 | | +| atl.cpp:496:16:496:17 | call to CComBSTR | atl.cpp:497:7:497:8 | b6 | | +| atl.cpp:496:16:496:17 | call to CComBSTR | atl.cpp:498:12:498:13 | b6 | | +| atl.cpp:496:16:496:17 | call to CComBSTR | atl.cpp:515:5:515:5 | b6 | | +| atl.cpp:497:7:497:8 | ref arg b6 | atl.cpp:498:12:498:13 | b6 | | +| atl.cpp:497:7:497:8 | ref arg b6 | atl.cpp:515:5:515:5 | b6 | | +| atl.cpp:498:12:498:13 | b6 [post update] | atl.cpp:515:5:515:5 | b6 | | +| atl.cpp:500:16:500:17 | call to CComBSTR | atl.cpp:501:7:501:8 | b7 | | +| atl.cpp:500:16:500:17 | call to CComBSTR | atl.cpp:502:12:502:13 | b7 | | +| atl.cpp:500:16:500:17 | call to CComBSTR | atl.cpp:505:21:505:22 | b7 | | +| atl.cpp:500:16:500:17 | call to CComBSTR | atl.cpp:515:5:515:5 | b7 | | +| atl.cpp:501:7:501:8 | ref arg b7 | atl.cpp:502:12:502:13 | b7 | | +| atl.cpp:501:7:501:8 | ref arg b7 | atl.cpp:505:21:505:22 | b7 | | +| atl.cpp:501:7:501:8 | ref arg b7 | atl.cpp:515:5:515:5 | b7 | | +| atl.cpp:502:12:502:13 | b7 [post update] | atl.cpp:505:21:505:22 | b7 | | +| atl.cpp:502:12:502:13 | b7 [post update] | atl.cpp:515:5:515:5 | b7 | | +| atl.cpp:502:15:502:19 | ref arg m_str | atl.cpp:505:24:505:28 | m_str | | +| atl.cpp:504:16:504:17 | call to CComBSTR | atl.cpp:505:7:505:8 | b8 | | +| atl.cpp:504:16:504:17 | call to CComBSTR | atl.cpp:506:12:506:13 | b8 | | +| atl.cpp:504:16:504:17 | call to CComBSTR | atl.cpp:515:5:515:5 | b8 | | +| atl.cpp:505:7:505:8 | ref arg b8 | atl.cpp:506:12:506:13 | b8 | | +| atl.cpp:505:7:505:8 | ref arg b8 | atl.cpp:515:5:515:5 | b8 | | +| atl.cpp:505:21:505:22 | b7 [post update] | atl.cpp:515:5:515:5 | b7 | | +| atl.cpp:506:12:506:13 | b8 [post update] | atl.cpp:515:5:515:5 | b8 | | +| atl.cpp:508:16:508:17 | call to CComBSTR | atl.cpp:510:7:510:8 | b9 | | +| atl.cpp:508:16:508:17 | call to CComBSTR | atl.cpp:511:7:511:8 | b9 | | +| atl.cpp:508:16:508:17 | call to CComBSTR | atl.cpp:514:12:514:13 | b9 | | +| atl.cpp:508:16:508:17 | call to CComBSTR | atl.cpp:515:5:515:5 | b9 | | +| atl.cpp:509:19:509:22 | safe | atl.cpp:511:23:511:26 | safe | | +| atl.cpp:509:19:509:22 | safe | atl.cpp:512:12:512:15 | safe | | +| atl.cpp:510:7:510:8 | ref arg b9 | atl.cpp:511:7:511:8 | b9 | | +| atl.cpp:510:7:510:8 | ref arg b9 | atl.cpp:514:12:514:13 | b9 | | +| atl.cpp:510:7:510:8 | ref arg b9 | atl.cpp:515:5:515:5 | b9 | | +| atl.cpp:511:7:511:8 | ref arg b9 | atl.cpp:514:12:514:13 | b9 | | +| atl.cpp:511:7:511:8 | ref arg b9 | atl.cpp:515:5:515:5 | b9 | | +| atl.cpp:511:22:511:26 | ref arg & ... | atl.cpp:511:23:511:26 | safe [inner post update] | | +| atl.cpp:511:22:511:26 | ref arg & ... | atl.cpp:512:12:512:15 | safe | | +| atl.cpp:511:23:511:26 | safe | atl.cpp:511:22:511:26 | & ... | | +| atl.cpp:514:12:514:13 | ref arg b9 | atl.cpp:515:5:515:5 | b9 | | +| atl.cpp:517:18:517:41 | call to indirect_source | atl.cpp:519:18:519:18 | w | | +| atl.cpp:517:18:517:41 | call to indirect_source | atl.cpp:523:17:523:17 | w | | +| atl.cpp:517:18:517:41 | call to indirect_source | atl.cpp:527:22:527:22 | w | | +| atl.cpp:519:18:519:18 | ref arg w | atl.cpp:523:17:523:17 | w | | +| atl.cpp:519:18:519:18 | ref arg w | atl.cpp:527:22:527:22 | w | | +| atl.cpp:519:18:519:18 | w | atl.cpp:519:18:519:19 | call to CComBSTR | TAINT | +| atl.cpp:519:18:519:19 | call to CComBSTR | atl.cpp:520:12:520:12 | b | | +| atl.cpp:519:18:519:19 | call to CComBSTR | atl.cpp:525:5:525:5 | b | | +| atl.cpp:520:12:520:12 | b [post update] | atl.cpp:525:5:525:5 | b | | +| atl.cpp:522:16:522:17 | call to CComBSTR | atl.cpp:523:7:523:8 | b2 | | +| atl.cpp:522:16:522:17 | call to CComBSTR | atl.cpp:524:12:524:13 | b2 | | +| atl.cpp:522:16:522:17 | call to CComBSTR | atl.cpp:525:5:525:5 | b2 | | +| atl.cpp:523:7:523:8 | ref arg b2 | atl.cpp:524:12:524:13 | b2 | | +| atl.cpp:523:7:523:8 | ref arg b2 | atl.cpp:525:5:525:5 | b2 | | +| atl.cpp:523:17:523:17 | ref arg w | atl.cpp:527:22:527:22 | w | | +| atl.cpp:524:12:524:13 | b2 [post update] | atl.cpp:525:5:525:5 | b2 | | +| atl.cpp:527:18:527:23 | call to CComBSTR | atl.cpp:528:12:528:12 | b | | +| atl.cpp:527:18:527:23 | call to CComBSTR | atl.cpp:529:5:529:5 | b | | +| atl.cpp:528:12:528:12 | b [post update] | atl.cpp:529:5:529:5 | b | | +| atl.cpp:574:24:574:35 | call to getSafeArray | atl.cpp:575:10:575:13 | safe | | +| atl.cpp:574:24:574:35 | call to getSafeArray | atl.cpp:577:26:577:29 | safe | | +| atl.cpp:574:24:574:35 | call to getSafeArray | atl.cpp:588:13:588:16 | safe | | +| atl.cpp:575:10:575:13 | safe [post update] | atl.cpp:577:26:577:29 | safe | | +| atl.cpp:575:10:575:13 | safe [post update] | atl.cpp:588:13:588:16 | safe | | +| atl.cpp:577:26:577:29 | safe | atl.cpp:577:26:577:30 | call to CComSafeArray | TAINT | +| atl.cpp:577:26:577:30 | call to CComSafeArray | atl.cpp:578:10:578:10 | c | | +| atl.cpp:577:26:577:30 | call to CComSafeArray | atl.cpp:579:10:579:10 | c | | +| atl.cpp:577:26:577:30 | call to CComSafeArray | atl.cpp:580:10:580:10 | c | | +| atl.cpp:577:26:577:30 | call to CComSafeArray | atl.cpp:581:10:581:10 | c | | +| atl.cpp:577:26:577:30 | call to CComSafeArray | atl.cpp:582:5:582:5 | c | | +| atl.cpp:578:10:578:10 | ref arg c | atl.cpp:579:10:579:10 | c | | +| atl.cpp:578:10:578:10 | ref arg c | atl.cpp:580:10:580:10 | c | | +| atl.cpp:578:10:578:10 | ref arg c | atl.cpp:581:10:581:10 | c | | +| atl.cpp:578:10:578:10 | ref arg c | atl.cpp:582:5:582:5 | c | | +| atl.cpp:579:10:579:10 | ref arg c | atl.cpp:580:10:580:10 | c | | +| atl.cpp:579:10:579:10 | ref arg c | atl.cpp:581:10:581:10 | c | | +| atl.cpp:579:10:579:10 | ref arg c | atl.cpp:582:5:582:5 | c | | +| atl.cpp:580:10:580:10 | ref arg c | atl.cpp:581:10:581:10 | c | | +| atl.cpp:580:10:580:10 | ref arg c | atl.cpp:582:5:582:5 | c | | +| atl.cpp:581:10:581:10 | c [post update] | atl.cpp:582:5:582:5 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:585:12:585:12 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:586:12:586:12 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:587:12:587:12 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:588:7:588:7 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:589:12:589:12 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:590:12:590:12 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:591:12:591:12 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:592:37:592:37 | c | | +| atl.cpp:584:26:584:26 | call to CComSafeArray | atl.cpp:593:5:593:5 | c | | +| atl.cpp:585:12:585:12 | ref arg c | atl.cpp:586:12:586:12 | c | | +| atl.cpp:585:12:585:12 | ref arg c | atl.cpp:587:12:587:12 | c | | +| atl.cpp:585:12:585:12 | ref arg c | atl.cpp:588:7:588:7 | c | | +| atl.cpp:585:12:585:12 | ref arg c | atl.cpp:589:12:589:12 | c | | +| atl.cpp:585:12:585:12 | ref arg c | atl.cpp:590:12:590:12 | c | | +| atl.cpp:585:12:585:12 | ref arg c | atl.cpp:591:12:591:12 | c | | +| atl.cpp:585:12:585:12 | ref arg c | atl.cpp:592:37:592:37 | c | | +| atl.cpp:585:12:585:12 | ref arg c | atl.cpp:593:5:593:5 | c | | +| atl.cpp:586:12:586:12 | ref arg c | atl.cpp:587:12:587:12 | c | | +| atl.cpp:586:12:586:12 | ref arg c | atl.cpp:588:7:588:7 | c | | +| atl.cpp:586:12:586:12 | ref arg c | atl.cpp:589:12:589:12 | c | | +| atl.cpp:586:12:586:12 | ref arg c | atl.cpp:590:12:590:12 | c | | +| atl.cpp:586:12:586:12 | ref arg c | atl.cpp:591:12:591:12 | c | | +| atl.cpp:586:12:586:12 | ref arg c | atl.cpp:592:37:592:37 | c | | +| atl.cpp:586:12:586:12 | ref arg c | atl.cpp:593:5:593:5 | c | | +| atl.cpp:587:12:587:12 | ref arg c | atl.cpp:588:7:588:7 | c | | +| atl.cpp:587:12:587:12 | ref arg c | atl.cpp:589:12:589:12 | c | | +| atl.cpp:587:12:587:12 | ref arg c | atl.cpp:590:12:590:12 | c | | +| atl.cpp:587:12:587:12 | ref arg c | atl.cpp:591:12:591:12 | c | | +| atl.cpp:587:12:587:12 | ref arg c | atl.cpp:592:37:592:37 | c | | +| atl.cpp:587:12:587:12 | ref arg c | atl.cpp:593:5:593:5 | c | | +| atl.cpp:588:7:588:7 | ref arg c | atl.cpp:589:12:589:12 | c | | +| atl.cpp:588:7:588:7 | ref arg c | atl.cpp:590:12:590:12 | c | | +| atl.cpp:588:7:588:7 | ref arg c | atl.cpp:591:12:591:12 | c | | +| atl.cpp:588:7:588:7 | ref arg c | atl.cpp:592:37:592:37 | c | | +| atl.cpp:588:7:588:7 | ref arg c | atl.cpp:593:5:593:5 | c | | +| atl.cpp:589:12:589:12 | ref arg c | atl.cpp:590:12:590:12 | c | | +| atl.cpp:589:12:589:12 | ref arg c | atl.cpp:591:12:591:12 | c | | +| atl.cpp:589:12:589:12 | ref arg c | atl.cpp:592:37:592:37 | c | | +| atl.cpp:589:12:589:12 | ref arg c | atl.cpp:593:5:593:5 | c | | +| atl.cpp:590:12:590:12 | ref arg c | atl.cpp:591:12:591:12 | c | | +| atl.cpp:590:12:590:12 | ref arg c | atl.cpp:592:37:592:37 | c | | +| atl.cpp:590:12:590:12 | ref arg c | atl.cpp:593:5:593:5 | c | | +| atl.cpp:591:12:591:12 | ref arg c | atl.cpp:592:37:592:37 | c | | +| atl.cpp:591:12:591:12 | ref arg c | atl.cpp:593:5:593:5 | c | | +| atl.cpp:592:37:592:37 | ref arg c | atl.cpp:593:5:593:5 | c | | +| atl.cpp:595:26:595:26 | call to CComSafeArray | atl.cpp:596:7:596:7 | c | | +| atl.cpp:595:26:595:26 | call to CComSafeArray | atl.cpp:597:12:597:12 | c | | +| atl.cpp:595:26:595:26 | call to CComSafeArray | atl.cpp:598:12:598:12 | c | | +| atl.cpp:595:26:595:26 | call to CComSafeArray | atl.cpp:599:12:599:12 | c | | +| atl.cpp:595:26:595:26 | call to CComSafeArray | atl.cpp:600:5:600:5 | c | | +| atl.cpp:596:7:596:7 | ref arg c | atl.cpp:597:12:597:12 | c | | +| atl.cpp:596:7:596:7 | ref arg c | atl.cpp:598:12:598:12 | c | | +| atl.cpp:596:7:596:7 | ref arg c | atl.cpp:599:12:599:12 | c | | +| atl.cpp:596:7:596:7 | ref arg c | atl.cpp:600:5:600:5 | c | | +| atl.cpp:597:12:597:12 | ref arg c | atl.cpp:598:12:598:12 | c | | +| atl.cpp:597:12:597:12 | ref arg c | atl.cpp:599:12:599:12 | c | | +| atl.cpp:597:12:597:12 | ref arg c | atl.cpp:600:5:600:5 | c | | +| atl.cpp:598:12:598:12 | ref arg c | atl.cpp:599:12:599:12 | c | | +| atl.cpp:598:12:598:12 | ref arg c | atl.cpp:600:5:600:5 | c | | +| atl.cpp:599:12:599:12 | ref arg c | atl.cpp:600:5:600:5 | c | | +| atl.cpp:602:26:602:26 | call to CComSafeArray | atl.cpp:603:7:603:7 | c | | +| atl.cpp:602:26:602:26 | call to CComSafeArray | atl.cpp:604:12:604:12 | c | | +| atl.cpp:602:26:602:26 | call to CComSafeArray | atl.cpp:605:12:605:12 | c | | +| atl.cpp:602:26:602:26 | call to CComSafeArray | atl.cpp:606:5:606:5 | c | | +| atl.cpp:603:7:603:7 | ref arg c | atl.cpp:604:12:604:12 | c | | +| atl.cpp:603:7:603:7 | ref arg c | atl.cpp:605:12:605:12 | c | | +| atl.cpp:603:7:603:7 | ref arg c | atl.cpp:606:5:606:5 | c | | +| atl.cpp:604:12:604:12 | ref arg c | atl.cpp:605:12:605:12 | c | | +| atl.cpp:604:12:604:12 | ref arg c | atl.cpp:606:5:606:5 | c | | +| atl.cpp:605:12:605:12 | ref arg c | atl.cpp:606:5:606:5 | c | | +| atl.cpp:667:15:667:35 | call to indirect_source | atl.cpp:668:13:668:13 | x | | +| atl.cpp:667:15:667:35 | call to indirect_source | atl.cpp:677:22:677:22 | x | | +| atl.cpp:667:15:667:35 | call to indirect_source | atl.cpp:682:16:682:16 | x | | +| atl.cpp:667:15:667:35 | call to indirect_source | atl.cpp:690:13:690:13 | x | | +| atl.cpp:667:15:667:35 | call to indirect_source | atl.cpp:696:17:696:17 | x | | +| atl.cpp:667:15:667:35 | call to indirect_source | atl.cpp:701:26:701:26 | x | | +| atl.cpp:667:15:667:35 | call to indirect_source | atl.cpp:707:32:707:32 | x | | +| atl.cpp:668:13:668:13 | ref arg x | atl.cpp:677:22:677:22 | x | | +| atl.cpp:668:13:668:13 | ref arg x | atl.cpp:682:16:682:16 | x | | +| atl.cpp:668:13:668:13 | ref arg x | atl.cpp:690:13:690:13 | x | | +| atl.cpp:668:13:668:13 | ref arg x | atl.cpp:696:17:696:17 | x | | +| atl.cpp:668:13:668:13 | ref arg x | atl.cpp:701:26:701:26 | x | | +| atl.cpp:668:13:668:13 | ref arg x | atl.cpp:707:32:707:32 | x | | +| atl.cpp:668:13:668:13 | x | atl.cpp:668:13:668:14 | call to CPathT | TAINT | +| atl.cpp:668:13:668:14 | call to CPathT | atl.cpp:669:29:669:29 | p | | +| atl.cpp:668:13:668:14 | call to CPathT | atl.cpp:670:10:670:10 | p | | +| atl.cpp:668:13:668:14 | call to CPathT | atl.cpp:672:14:672:14 | p | | +| atl.cpp:669:29:669:29 | ref arg p | atl.cpp:670:10:670:10 | p | | +| atl.cpp:669:29:669:29 | ref arg p | atl.cpp:672:14:672:14 | p | | +| atl.cpp:670:10:670:10 | p [post update] | atl.cpp:672:14:672:14 | p | | +| atl.cpp:670:12:670:20 | ref arg m_strPath | atl.cpp:673:13:673:21 | m_strPath | | +| atl.cpp:672:14:672:14 | p | atl.cpp:672:14:672:15 | call to CPathT | | +| atl.cpp:672:14:672:15 | call to CPathT | atl.cpp:673:10:673:11 | p2 | | +| atl.cpp:676:13:676:13 | call to CPathT | atl.cpp:677:7:677:7 | p | | +| atl.cpp:676:13:676:13 | call to CPathT | atl.cpp:678:12:678:12 | p | | +| atl.cpp:677:7:677:7 | ref arg p | atl.cpp:678:12:678:12 | p | | +| atl.cpp:677:22:677:22 | ref arg x | atl.cpp:682:16:682:16 | x | | +| atl.cpp:677:22:677:22 | ref arg x | atl.cpp:690:13:690:13 | x | | +| atl.cpp:677:22:677:22 | ref arg x | atl.cpp:696:17:696:17 | x | | +| atl.cpp:677:22:677:22 | ref arg x | atl.cpp:701:26:701:26 | x | | +| atl.cpp:677:22:677:22 | ref arg x | atl.cpp:707:32:707:32 | x | | +| atl.cpp:681:13:681:13 | call to CPathT | atl.cpp:682:7:682:7 | p | | +| atl.cpp:681:13:681:13 | call to CPathT | atl.cpp:683:12:683:12 | p | | +| atl.cpp:681:13:681:13 | call to CPathT | atl.cpp:686:13:686:13 | p | | +| atl.cpp:682:7:682:7 | ref arg p | atl.cpp:683:12:683:12 | p | | +| atl.cpp:682:7:682:7 | ref arg p | atl.cpp:686:13:686:13 | p | | +| atl.cpp:682:16:682:16 | ref arg x | atl.cpp:690:13:690:13 | x | | +| atl.cpp:682:16:682:16 | ref arg x | atl.cpp:696:17:696:17 | x | | +| atl.cpp:682:16:682:16 | ref arg x | atl.cpp:701:26:701:26 | x | | +| atl.cpp:682:16:682:16 | ref arg x | atl.cpp:707:32:707:32 | x | | +| atl.cpp:683:12:683:12 | p [post update] | atl.cpp:686:13:686:13 | p | | +| atl.cpp:685:13:685:14 | call to CPathT | atl.cpp:686:7:686:8 | p2 | | +| atl.cpp:685:13:685:14 | call to CPathT | atl.cpp:687:12:687:13 | p2 | | +| atl.cpp:686:7:686:8 | ref arg p2 | atl.cpp:687:12:687:13 | p2 | | +| atl.cpp:686:13:686:13 | call to operator char *& | atl.cpp:686:10:686:10 | call to operator+= | TAINT | +| atl.cpp:689:13:689:14 | call to CPathT | atl.cpp:690:7:690:8 | p3 | | +| atl.cpp:689:13:689:14 | call to CPathT | atl.cpp:691:12:691:13 | p3 | | +| atl.cpp:690:7:690:8 | ref arg p3 | atl.cpp:691:12:691:13 | p3 | | +| atl.cpp:690:13:690:13 | ref arg x | atl.cpp:696:17:696:17 | x | | +| atl.cpp:690:13:690:13 | ref arg x | atl.cpp:701:26:701:26 | x | | +| atl.cpp:690:13:690:13 | ref arg x | atl.cpp:707:32:707:32 | x | | +| atl.cpp:690:13:690:13 | x | atl.cpp:690:10:690:10 | call to operator+= | TAINT | +| atl.cpp:695:13:695:13 | call to CPathT | atl.cpp:696:7:696:7 | p | | +| atl.cpp:695:13:695:13 | call to CPathT | atl.cpp:697:12:697:12 | p | | +| atl.cpp:696:7:696:7 | ref arg p | atl.cpp:697:12:697:12 | p | | +| atl.cpp:696:17:696:17 | ref arg x | atl.cpp:701:26:701:26 | x | | +| atl.cpp:696:17:696:17 | ref arg x | atl.cpp:707:32:707:32 | x | | +| atl.cpp:700:13:700:13 | call to CPathT | atl.cpp:701:7:701:7 | p | | +| atl.cpp:700:13:700:13 | call to CPathT | atl.cpp:702:12:702:12 | p | | +| atl.cpp:701:7:701:7 | ref arg p | atl.cpp:702:12:702:12 | p | | +| atl.cpp:701:26:701:26 | ref arg x | atl.cpp:707:32:707:32 | x | | +| atl.cpp:706:13:706:13 | call to CPathT | atl.cpp:707:17:707:17 | p | | +| atl.cpp:707:19:707:30 | call to CommonPrefix | atl.cpp:708:12:708:13 | p2 | | +| atl.cpp:707:19:707:30 | call to CommonPrefix | atl.cpp:709:12:709:13 | p2 | | +| atl.cpp:708:12:708:13 | p2 [post update] | atl.cpp:709:12:709:13 | p2 | | +| atl.cpp:736:13:736:23 | call to source | atl.cpp:739:13:739:13 | x | | +| atl.cpp:736:13:736:23 | call to source | atl.cpp:751:13:751:13 | x | | +| atl.cpp:736:13:736:23 | call to source | atl.cpp:755:25:755:25 | x | | +| atl.cpp:738:25:738:25 | call to CSimpleArray | atl.cpp:739:7:739:7 | a | | +| atl.cpp:738:25:738:25 | call to CSimpleArray | atl.cpp:740:12:740:12 | a | | +| atl.cpp:738:25:738:25 | call to CSimpleArray | atl.cpp:741:7:741:7 | a | | +| atl.cpp:738:25:738:25 | call to CSimpleArray | atl.cpp:742:12:742:12 | a | | +| atl.cpp:738:25:738:25 | call to CSimpleArray | atl.cpp:746:12:746:12 | a | | +| atl.cpp:738:25:738:25 | call to CSimpleArray | atl.cpp:748:5:748:5 | a | | +| atl.cpp:739:7:739:7 | ref arg a | atl.cpp:740:12:740:12 | a | | +| atl.cpp:739:7:739:7 | ref arg a | atl.cpp:741:7:741:7 | a | | +| atl.cpp:739:7:739:7 | ref arg a | atl.cpp:742:12:742:12 | a | | +| atl.cpp:739:7:739:7 | ref arg a | atl.cpp:746:12:746:12 | a | | +| atl.cpp:739:7:739:7 | ref arg a | atl.cpp:748:5:748:5 | a | | +| atl.cpp:740:12:740:12 | ref arg a | atl.cpp:741:7:741:7 | a | | +| atl.cpp:740:12:740:12 | ref arg a | atl.cpp:742:12:742:12 | a | | +| atl.cpp:740:12:740:12 | ref arg a | atl.cpp:746:12:746:12 | a | | +| atl.cpp:740:12:740:12 | ref arg a | atl.cpp:748:5:748:5 | a | | +| atl.cpp:741:7:741:7 | ref arg a | atl.cpp:742:12:742:12 | a | | +| atl.cpp:741:7:741:7 | ref arg a | atl.cpp:746:12:746:12 | a | | +| atl.cpp:741:7:741:7 | ref arg a | atl.cpp:748:5:748:5 | a | | +| atl.cpp:742:12:742:12 | ref arg a | atl.cpp:746:12:746:12 | a | | +| atl.cpp:742:12:742:12 | ref arg a | atl.cpp:748:5:748:5 | a | | +| atl.cpp:744:25:744:26 | call to CSimpleArray | atl.cpp:745:12:745:13 | a2 | | +| atl.cpp:744:25:744:26 | call to CSimpleArray | atl.cpp:746:7:746:8 | a2 | | +| atl.cpp:744:25:744:26 | call to CSimpleArray | atl.cpp:747:12:747:13 | a2 | | +| atl.cpp:744:25:744:26 | call to CSimpleArray | atl.cpp:748:5:748:5 | a2 | | +| atl.cpp:745:12:745:13 | ref arg a2 | atl.cpp:746:7:746:8 | a2 | | +| atl.cpp:745:12:745:13 | ref arg a2 | atl.cpp:747:12:747:13 | a2 | | +| atl.cpp:745:12:745:13 | ref arg a2 | atl.cpp:748:5:748:5 | a2 | | +| atl.cpp:746:7:746:8 | ref arg a2 | atl.cpp:747:12:747:13 | a2 | | +| atl.cpp:746:7:746:8 | ref arg a2 | atl.cpp:748:5:748:5 | a2 | | +| atl.cpp:746:12:746:12 | a | atl.cpp:746:7:746:8 | ref arg a2 | TAINT | +| atl.cpp:746:12:746:12 | a | atl.cpp:746:10:746:10 | call to operator= | TAINT | +| atl.cpp:747:12:747:13 | ref arg a2 | atl.cpp:748:5:748:5 | a2 | | +| atl.cpp:750:25:750:25 | call to CSimpleArray | atl.cpp:751:7:751:7 | a | | +| atl.cpp:750:25:750:25 | call to CSimpleArray | atl.cpp:752:12:752:12 | a | | +| atl.cpp:750:25:750:25 | call to CSimpleArray | atl.cpp:757:5:757:5 | a | | +| atl.cpp:751:7:751:7 | ref arg a | atl.cpp:752:12:752:12 | a | | +| atl.cpp:751:7:751:7 | ref arg a | atl.cpp:757:5:757:5 | a | | +| atl.cpp:752:12:752:12 | ref arg a | atl.cpp:757:5:757:5 | a | | +| atl.cpp:754:25:754:26 | call to CSimpleArray | atl.cpp:755:17:755:18 | a2 | | +| atl.cpp:754:25:754:26 | call to CSimpleArray | atl.cpp:756:12:756:13 | a2 | | +| atl.cpp:754:25:754:26 | call to CSimpleArray | atl.cpp:757:5:757:5 | a2 | | +| atl.cpp:755:20:755:23 | call to Find | atl.cpp:756:15:756:17 | pos | | +| atl.cpp:756:12:756:13 | ref arg a2 | atl.cpp:757:5:757:5 | a2 | | +| atl.cpp:781:18:781:33 | call to source | atl.cpp:784:22:784:22 | x | | +| atl.cpp:781:18:781:33 | call to source | atl.cpp:794:28:794:28 | x | | +| atl.cpp:781:18:781:33 | call to source | atl.cpp:799:34:799:34 | x | | +| atl.cpp:781:18:781:33 | call to source | atl.cpp:805:24:805:24 | x | | +| atl.cpp:781:18:781:33 | call to source | atl.cpp:810:32:810:32 | x | | +| atl.cpp:783:35:783:35 | call to CSimpleMap | atl.cpp:784:7:784:7 | a | | +| atl.cpp:783:35:783:35 | call to CSimpleMap | atl.cpp:785:12:785:12 | a | | +| atl.cpp:783:35:783:35 | call to CSimpleMap | atl.cpp:786:5:786:5 | a | | +| atl.cpp:784:7:784:7 | ref arg a | atl.cpp:785:12:785:12 | a | | +| atl.cpp:784:7:784:7 | ref arg a | atl.cpp:786:5:786:5 | a | | +| atl.cpp:785:12:785:12 | ref arg a | atl.cpp:786:5:786:5 | a | | +| atl.cpp:788:35:788:35 | call to CSimpleMap | atl.cpp:789:18:789:18 | a | | +| atl.cpp:788:35:788:35 | call to CSimpleMap | atl.cpp:790:12:790:12 | a | | +| atl.cpp:788:35:788:35 | call to CSimpleMap | atl.cpp:791:5:791:5 | a | | +| atl.cpp:789:20:789:26 | call to FindKey | atl.cpp:790:25:790:27 | pos | | +| atl.cpp:790:12:790:12 | ref arg a | atl.cpp:791:5:791:5 | a | | +| atl.cpp:793:35:793:35 | call to CSimpleMap | atl.cpp:794:18:794:18 | a | | +| atl.cpp:793:35:793:35 | call to CSimpleMap | atl.cpp:795:12:795:12 | a | | +| atl.cpp:793:35:793:35 | call to CSimpleMap | atl.cpp:796:5:796:5 | a | | +| atl.cpp:794:20:794:26 | call to FindVal | atl.cpp:795:25:795:27 | pos | | +| atl.cpp:795:12:795:12 | ref arg a | atl.cpp:796:5:796:5 | a | | +| atl.cpp:798:35:798:35 | call to CSimpleMap | atl.cpp:799:18:799:18 | a | | +| atl.cpp:798:35:798:35 | call to CSimpleMap | atl.cpp:801:12:801:12 | a | | +| atl.cpp:798:35:798:35 | call to CSimpleMap | atl.cpp:802:5:802:5 | a | | +| atl.cpp:799:18:799:18 | ref arg a | atl.cpp:801:12:801:12 | a | | +| atl.cpp:799:18:799:18 | ref arg a | atl.cpp:802:5:802:5 | a | | +| atl.cpp:799:20:799:32 | call to ReverseLookup | atl.cpp:800:12:800:14 | key | | +| atl.cpp:799:20:799:32 | call to ReverseLookup | atl.cpp:801:21:801:23 | key | | +| atl.cpp:800:12:800:14 | ref arg key | atl.cpp:801:21:801:23 | key | | +| atl.cpp:801:12:801:12 | ref arg a | atl.cpp:802:5:802:5 | a | | +| atl.cpp:804:35:804:35 | call to CSimpleMap | atl.cpp:805:7:805:7 | a | | +| atl.cpp:804:35:804:35 | call to CSimpleMap | atl.cpp:806:12:806:12 | a | | +| atl.cpp:804:35:804:35 | call to CSimpleMap | atl.cpp:807:5:807:5 | a | | +| atl.cpp:805:7:805:7 | ref arg a | atl.cpp:806:12:806:12 | a | | +| atl.cpp:805:7:805:7 | ref arg a | atl.cpp:807:5:807:5 | a | | +| atl.cpp:806:12:806:12 | ref arg a | atl.cpp:807:5:807:5 | a | | +| atl.cpp:809:35:809:35 | call to CSimpleMap | atl.cpp:810:7:810:7 | a | | +| atl.cpp:809:35:809:35 | call to CSimpleMap | atl.cpp:811:12:811:12 | a | | +| atl.cpp:809:35:809:35 | call to CSimpleMap | atl.cpp:812:5:812:5 | a | | +| atl.cpp:810:7:810:7 | ref arg a | atl.cpp:811:12:811:12 | a | | +| atl.cpp:810:7:810:7 | ref arg a | atl.cpp:812:5:812:5 | a | | +| atl.cpp:811:12:811:12 | ref arg a | atl.cpp:812:5:812:5 | a | | +| atl.cpp:853:15:853:35 | call to indirect_source | atl.cpp:855:18:855:18 | x | | +| atl.cpp:853:15:853:35 | call to indirect_source | atl.cpp:868:21:868:21 | x | | +| atl.cpp:853:15:853:35 | call to indirect_source | atl.cpp:874:25:874:25 | x | | +| atl.cpp:853:15:853:35 | call to indirect_source | atl.cpp:879:24:879:24 | x | | +| atl.cpp:853:15:853:35 | call to indirect_source | atl.cpp:884:24:884:24 | x | | +| atl.cpp:853:15:853:35 | call to indirect_source | atl.cpp:889:26:889:26 | x | | +| atl.cpp:853:15:853:35 | call to indirect_source | atl.cpp:894:23:894:23 | x | | +| atl.cpp:853:15:853:35 | call to indirect_source | atl.cpp:899:24:899:24 | x | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:855:5:855:7 | url | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:856:10:856:12 | url | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:857:10:857:12 | url | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:858:10:858:12 | url | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:859:10:859:12 | url | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:860:10:860:12 | url | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:861:10:861:12 | url | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:862:10:862:12 | url | | +| atl.cpp:854:10:854:12 | call to CUrl | atl.cpp:902:3:902:3 | url | | +| atl.cpp:855:5:855:7 | ref arg url | atl.cpp:856:10:856:12 | url | | +| atl.cpp:855:5:855:7 | ref arg url | atl.cpp:857:10:857:12 | url | | +| atl.cpp:855:5:855:7 | ref arg url | atl.cpp:858:10:858:12 | url | | +| atl.cpp:855:5:855:7 | ref arg url | atl.cpp:859:10:859:12 | url | | +| atl.cpp:855:5:855:7 | ref arg url | atl.cpp:860:10:860:12 | url | | +| atl.cpp:855:5:855:7 | ref arg url | atl.cpp:861:10:861:12 | url | | +| atl.cpp:855:5:855:7 | ref arg url | atl.cpp:862:10:862:12 | url | | +| atl.cpp:855:5:855:7 | ref arg url | atl.cpp:902:3:902:3 | url | | +| atl.cpp:865:12:865:15 | call to CUrl | atl.cpp:868:7:868:10 | url2 | | +| atl.cpp:865:12:865:15 | call to CUrl | atl.cpp:869:7:869:10 | url2 | | +| atl.cpp:865:12:865:15 | call to CUrl | atl.cpp:871:5:871:5 | url2 | | +| atl.cpp:866:13:866:15 | len | atl.cpp:869:31:869:33 | len | | +| atl.cpp:867:12:867:17 | buffer | atl.cpp:869:22:869:27 | buffer | | +| atl.cpp:867:12:867:17 | buffer | atl.cpp:870:12:870:17 | buffer | | +| atl.cpp:868:7:868:10 | ref arg url2 | atl.cpp:869:7:869:10 | url2 | | +| atl.cpp:868:7:868:10 | ref arg url2 | atl.cpp:871:5:871:5 | url2 | | +| atl.cpp:869:22:869:27 | ref arg buffer | atl.cpp:870:12:870:17 | buffer | | +| atl.cpp:869:30:869:33 | ref arg & ... | atl.cpp:869:31:869:33 | len [inner post update] | | +| atl.cpp:869:31:869:33 | len | atl.cpp:869:30:869:33 | & ... | | +| atl.cpp:873:12:873:15 | call to CUrl | atl.cpp:874:7:874:10 | url2 | | +| atl.cpp:873:12:873:15 | call to CUrl | atl.cpp:875:12:875:15 | url2 | | +| atl.cpp:873:12:873:15 | call to CUrl | atl.cpp:876:5:876:5 | url2 | | +| atl.cpp:874:7:874:10 | ref arg url2 | atl.cpp:875:12:875:15 | url2 | | +| atl.cpp:874:7:874:10 | ref arg url2 | atl.cpp:876:5:876:5 | url2 | | +| atl.cpp:878:12:878:15 | call to CUrl | atl.cpp:879:7:879:10 | url2 | | +| atl.cpp:878:12:878:15 | call to CUrl | atl.cpp:880:12:880:15 | url2 | | +| atl.cpp:878:12:878:15 | call to CUrl | atl.cpp:881:5:881:5 | url2 | | +| atl.cpp:879:7:879:10 | ref arg url2 | atl.cpp:880:12:880:15 | url2 | | +| atl.cpp:879:7:879:10 | ref arg url2 | atl.cpp:881:5:881:5 | url2 | | +| atl.cpp:883:12:883:15 | call to CUrl | atl.cpp:884:7:884:10 | url2 | | +| atl.cpp:883:12:883:15 | call to CUrl | atl.cpp:885:12:885:15 | url2 | | +| atl.cpp:883:12:883:15 | call to CUrl | atl.cpp:886:5:886:5 | url2 | | +| atl.cpp:884:7:884:10 | ref arg url2 | atl.cpp:885:12:885:15 | url2 | | +| atl.cpp:884:7:884:10 | ref arg url2 | atl.cpp:886:5:886:5 | url2 | | +| atl.cpp:888:12:888:15 | call to CUrl | atl.cpp:889:7:889:10 | url2 | | +| atl.cpp:888:12:888:15 | call to CUrl | atl.cpp:890:12:890:15 | url2 | | +| atl.cpp:888:12:888:15 | call to CUrl | atl.cpp:891:5:891:5 | url2 | | +| atl.cpp:889:7:889:10 | ref arg url2 | atl.cpp:890:12:890:15 | url2 | | +| atl.cpp:889:7:889:10 | ref arg url2 | atl.cpp:891:5:891:5 | url2 | | +| atl.cpp:893:12:893:15 | call to CUrl | atl.cpp:894:7:894:10 | url2 | | +| atl.cpp:893:12:893:15 | call to CUrl | atl.cpp:895:12:895:15 | url2 | | +| atl.cpp:893:12:893:15 | call to CUrl | atl.cpp:896:5:896:5 | url2 | | +| atl.cpp:894:7:894:10 | ref arg url2 | atl.cpp:895:12:895:15 | url2 | | +| atl.cpp:894:7:894:10 | ref arg url2 | atl.cpp:896:5:896:5 | url2 | | +| atl.cpp:898:12:898:15 | call to CUrl | atl.cpp:899:7:899:10 | url2 | | +| atl.cpp:898:12:898:15 | call to CUrl | atl.cpp:900:12:900:15 | url2 | | +| atl.cpp:898:12:898:15 | call to CUrl | atl.cpp:901:5:901:5 | url2 | | +| atl.cpp:899:7:899:10 | ref arg url2 | atl.cpp:900:12:900:15 | url2 | | +| atl.cpp:899:7:899:10 | ref arg url2 | atl.cpp:901:5:901:5 | url2 | | +| atl.cpp:955:15:955:35 | call to indirect_source | atl.cpp:957:29:957:29 | x | | +| atl.cpp:955:15:955:35 | call to indirect_source | atl.cpp:960:29:960:29 | x | | +| atl.cpp:955:15:955:35 | call to indirect_source | atl.cpp:979:46:979:46 | x | | +| atl.cpp:955:15:955:35 | call to indirect_source | atl.cpp:983:51:983:51 | x | | +| atl.cpp:955:15:955:35 | call to indirect_source | atl.cpp:987:56:987:56 | x | | +| atl.cpp:957:29:957:43 | call to CSimpleStringT | atl.cpp:958:10:958:11 | s1 | | +| atl.cpp:957:29:957:43 | call to CSimpleStringT | atl.cpp:1009:52:1009:53 | s1 | | +| atl.cpp:957:29:957:43 | call to CSimpleStringT | atl.cpp:1011:10:1011:11 | s1 | | +| atl.cpp:957:29:957:43 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s1 | | +| atl.cpp:960:29:960:39 | call to CSimpleStringT | atl.cpp:961:10:961:11 | s2 | | +| atl.cpp:960:29:960:39 | call to CSimpleStringT | atl.cpp:963:29:963:30 | s2 | | +| atl.cpp:960:29:960:39 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s2 | | +| atl.cpp:963:29:963:30 | s2 | atl.cpp:963:29:963:31 | call to CSimpleStringT | | +| atl.cpp:963:29:963:31 | call to CSimpleStringT | atl.cpp:964:10:964:11 | s3 | | +| atl.cpp:963:29:963:31 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s3 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:967:5:967:6 | s4 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:968:10:968:11 | s4 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:971:15:971:16 | s4 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:990:10:990:11 | s4 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:991:10:991:11 | s4 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:992:10:992:11 | s4 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:993:10:993:11 | s4 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:995:10:995:11 | s4 | | +| atl.cpp:966:26:966:27 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s4 | | +| atl.cpp:967:5:967:6 | ref arg s4 | atl.cpp:968:10:968:11 | s4 | | +| atl.cpp:967:5:967:6 | ref arg s4 | atl.cpp:971:15:971:16 | s4 | | +| atl.cpp:967:5:967:6 | ref arg s4 | atl.cpp:990:10:990:11 | s4 | | +| atl.cpp:967:5:967:6 | ref arg s4 | atl.cpp:991:10:991:11 | s4 | | +| atl.cpp:967:5:967:6 | ref arg s4 | atl.cpp:992:10:992:11 | s4 | | +| atl.cpp:967:5:967:6 | ref arg s4 | atl.cpp:993:10:993:11 | s4 | | +| atl.cpp:967:5:967:6 | ref arg s4 | atl.cpp:995:10:995:11 | s4 | | +| atl.cpp:967:5:967:6 | ref arg s4 | atl.cpp:1012:3:1012:3 | s4 | | +| atl.cpp:970:26:970:27 | call to CSimpleStringT | atl.cpp:971:5:971:6 | s5 | | +| atl.cpp:970:26:970:27 | call to CSimpleStringT | atl.cpp:972:10:972:11 | s5 | | +| atl.cpp:970:26:970:27 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s5 | | +| atl.cpp:971:5:971:6 | ref arg s5 | atl.cpp:972:10:972:11 | s5 | | +| atl.cpp:971:5:971:6 | ref arg s5 | atl.cpp:1012:3:1012:3 | s5 | | +| atl.cpp:974:26:974:27 | call to CSimpleStringT | atl.cpp:975:5:975:6 | s6 | | +| atl.cpp:974:26:974:27 | call to CSimpleStringT | atl.cpp:976:10:976:11 | s6 | | +| atl.cpp:974:26:974:27 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s6 | | +| atl.cpp:975:5:975:6 | ref arg s6 | atl.cpp:976:10:976:11 | s6 | | +| atl.cpp:975:5:975:6 | ref arg s6 | atl.cpp:1012:3:1012:3 | s6 | | +| atl.cpp:978:10:978:16 | buffer1 | atl.cpp:979:37:979:43 | buffer1 | | +| atl.cpp:978:10:978:16 | buffer1 | atl.cpp:980:10:980:16 | buffer1 | | +| atl.cpp:979:37:979:43 | ref arg buffer1 | atl.cpp:980:10:980:16 | buffer1 | | +| atl.cpp:982:10:982:16 | buffer2 | atl.cpp:983:37:983:43 | buffer2 | | +| atl.cpp:982:10:982:16 | buffer2 | atl.cpp:984:10:984:16 | buffer2 | | +| atl.cpp:983:37:983:43 | ref arg buffer2 | atl.cpp:984:10:984:16 | buffer2 | | +| atl.cpp:986:10:986:16 | buffer3 | atl.cpp:987:47:987:53 | buffer3 | | +| atl.cpp:986:10:986:16 | buffer3 | atl.cpp:988:10:988:16 | buffer3 | | +| atl.cpp:987:47:987:53 | ref arg buffer3 | atl.cpp:988:10:988:16 | buffer3 | | +| atl.cpp:991:10:991:11 | ref arg s4 | atl.cpp:992:10:992:11 | s4 | | +| atl.cpp:991:10:991:11 | ref arg s4 | atl.cpp:993:10:993:11 | s4 | | +| atl.cpp:991:10:991:11 | ref arg s4 | atl.cpp:995:10:995:11 | s4 | | +| atl.cpp:991:10:991:11 | ref arg s4 | atl.cpp:1012:3:1012:3 | s4 | | +| atl.cpp:992:10:992:11 | ref arg s4 | atl.cpp:993:10:993:11 | s4 | | +| atl.cpp:992:10:992:11 | ref arg s4 | atl.cpp:995:10:995:11 | s4 | | +| atl.cpp:992:10:992:11 | ref arg s4 | atl.cpp:1012:3:1012:3 | s4 | | +| atl.cpp:993:10:993:11 | ref arg s4 | atl.cpp:995:10:995:11 | s4 | | +| atl.cpp:993:10:993:11 | ref arg s4 | atl.cpp:1012:3:1012:3 | s4 | | +| atl.cpp:995:10:995:11 | ref arg s4 | atl.cpp:1012:3:1012:3 | s4 | | +| atl.cpp:997:26:997:27 | call to CSimpleStringT | atl.cpp:998:5:998:6 | s7 | | +| atl.cpp:997:26:997:27 | call to CSimpleStringT | atl.cpp:999:10:999:11 | s7 | | +| atl.cpp:997:26:997:27 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s7 | | +| atl.cpp:998:5:998:6 | ref arg s7 | atl.cpp:999:10:999:11 | s7 | | +| atl.cpp:998:5:998:6 | ref arg s7 | atl.cpp:1012:3:1012:3 | s7 | | +| atl.cpp:1001:26:1001:27 | call to CSimpleStringT | atl.cpp:1002:5:1002:6 | s8 | | +| atl.cpp:1001:26:1001:27 | call to CSimpleStringT | atl.cpp:1003:10:1003:11 | s8 | | +| atl.cpp:1001:26:1001:27 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s8 | | +| atl.cpp:1002:5:1002:6 | ref arg s8 | atl.cpp:1003:10:1003:11 | s8 | | +| atl.cpp:1002:5:1002:6 | ref arg s8 | atl.cpp:1012:3:1012:3 | s8 | | +| atl.cpp:1005:26:1005:27 | call to CSimpleStringT | atl.cpp:1006:5:1006:6 | s9 | | +| atl.cpp:1005:26:1005:27 | call to CSimpleStringT | atl.cpp:1007:10:1007:11 | s9 | | +| atl.cpp:1005:26:1005:27 | call to CSimpleStringT | atl.cpp:1012:3:1012:3 | s9 | | +| atl.cpp:1006:5:1006:6 | ref arg s9 | atl.cpp:1007:10:1007:11 | s9 | | +| atl.cpp:1006:5:1006:6 | ref arg s9 | atl.cpp:1012:3:1012:3 | s9 | | +| atl.cpp:1100:17:1100:31 | call to source | atl.cpp:1102:23:1102:23 | v | | +| atl.cpp:1100:17:1100:31 | call to source | atl.cpp:1105:23:1105:23 | v | | +| atl.cpp:1102:23:1102:23 | v | atl.cpp:1102:23:1102:24 | call to CStringT | TAINT | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1103:10:1103:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1137:45:1137:46 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1139:17:1139:18 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1173:10:1173:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1179:10:1179:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1180:10:1180:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1181:10:1181:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1182:10:1182:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1195:5:1195:6 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1198:10:1198:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1199:10:1199:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1202:10:1202:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1204:10:1204:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1205:10:1205:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1206:10:1206:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1102:23:1102:24 | call to CStringT | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1105:23:1105:33 | call to CStringT | atl.cpp:1106:10:1106:11 | s2 | | +| atl.cpp:1105:23:1105:33 | call to CStringT | atl.cpp:1108:23:1108:24 | s2 | | +| atl.cpp:1105:23:1105:33 | call to CStringT | atl.cpp:1192:10:1192:11 | s2 | | +| atl.cpp:1105:23:1105:33 | call to CStringT | atl.cpp:1213:3:1213:3 | s2 | | +| atl.cpp:1108:23:1108:24 | s2 | atl.cpp:1108:23:1108:25 | call to CStringT | | +| atl.cpp:1108:23:1108:25 | call to CStringT | atl.cpp:1109:10:1109:11 | s3 | | +| atl.cpp:1108:23:1108:25 | call to CStringT | atl.cpp:1213:3:1213:3 | s3 | | +| atl.cpp:1111:15:1111:35 | call to indirect_source | atl.cpp:1112:23:1112:23 | x | | +| atl.cpp:1111:15:1111:35 | call to indirect_source | atl.cpp:1119:23:1119:23 | x | | +| atl.cpp:1111:15:1111:35 | call to indirect_source | atl.cpp:1166:19:1166:19 | x | | +| atl.cpp:1111:15:1111:35 | call to indirect_source | atl.cpp:1185:24:1185:24 | x | | +| atl.cpp:1112:23:1112:23 | ref arg x | atl.cpp:1119:23:1119:23 | x | | +| atl.cpp:1112:23:1112:23 | ref arg x | atl.cpp:1166:19:1166:19 | x | | +| atl.cpp:1112:23:1112:23 | ref arg x | atl.cpp:1185:24:1185:24 | x | | +| atl.cpp:1112:23:1112:23 | x | atl.cpp:1112:23:1112:24 | call to CStringT | TAINT | +| atl.cpp:1112:23:1112:24 | call to CStringT | atl.cpp:1113:10:1113:11 | s4 | | +| atl.cpp:1112:23:1112:24 | call to CStringT | atl.cpp:1213:3:1213:3 | s4 | | +| atl.cpp:1115:18:1115:41 | call to indirect_source | atl.cpp:1116:26:1116:26 | y | | +| atl.cpp:1115:18:1115:41 | call to indirect_source | atl.cpp:1122:26:1122:26 | y | | +| atl.cpp:1116:26:1116:26 | ref arg y | atl.cpp:1122:26:1122:26 | y | | +| atl.cpp:1116:26:1116:26 | y | atl.cpp:1116:26:1116:27 | call to CStringT | TAINT | +| atl.cpp:1116:26:1116:27 | call to CStringT | atl.cpp:1117:10:1117:11 | s5 | | +| atl.cpp:1116:26:1116:27 | call to CStringT | atl.cpp:1213:3:1213:3 | s5 | | +| atl.cpp:1119:23:1119:33 | call to CStringT | atl.cpp:1120:10:1120:11 | s6 | | +| atl.cpp:1119:23:1119:33 | call to CStringT | atl.cpp:1213:3:1213:3 | s6 | | +| atl.cpp:1122:26:1122:36 | call to CStringT | atl.cpp:1123:10:1123:11 | s7 | | +| atl.cpp:1122:26:1122:36 | call to CStringT | atl.cpp:1213:3:1213:3 | s7 | | +| atl.cpp:1125:26:1125:55 | call to indirect_source | atl.cpp:1126:23:1126:25 | ucs | | +| atl.cpp:1126:23:1126:25 | ucs | atl.cpp:1126:23:1126:26 | call to CStringT | TAINT | +| atl.cpp:1126:23:1126:26 | call to CStringT | atl.cpp:1127:10:1127:11 | s8 | | +| atl.cpp:1126:23:1126:26 | call to CStringT | atl.cpp:1213:3:1213:3 | s8 | | +| atl.cpp:1129:14:1129:25 | call to source | atl.cpp:1130:23:1130:23 | c | | +| atl.cpp:1130:23:1130:23 | c | atl.cpp:1130:23:1130:24 | call to CStringT | TAINT | +| atl.cpp:1130:23:1130:24 | call to CStringT | atl.cpp:1131:10:1131:11 | s9 | | +| atl.cpp:1130:23:1130:24 | call to CStringT | atl.cpp:1213:3:1213:3 | s9 | | +| atl.cpp:1133:18:1133:32 | call to source | atl.cpp:1134:27:1134:28 | wc | | +| atl.cpp:1134:27:1134:28 | wc | atl.cpp:1134:27:1134:29 | call to CStringT | TAINT | +| atl.cpp:1134:27:1134:29 | call to CStringT | atl.cpp:1135:10:1135:12 | s10 | | +| atl.cpp:1134:27:1134:29 | call to CStringT | atl.cpp:1213:3:1213:3 | s10 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1173:10:1173:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1179:10:1179:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1180:10:1180:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1181:10:1181:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1182:10:1182:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1195:5:1195:6 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1198:10:1198:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1199:10:1199:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1202:10:1202:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1204:10:1204:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1205:10:1205:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1206:10:1206:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1139:17:1139:18 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1139:20:1139:33 | call to AllocSysString | atl.cpp:1140:10:1140:13 | bstr | | +| atl.cpp:1142:20:1142:22 | call to CStringT | atl.cpp:1143:5:1143:7 | s11 | | +| atl.cpp:1142:20:1142:22 | call to CStringT | atl.cpp:1144:10:1144:12 | s11 | | +| atl.cpp:1142:20:1142:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s11 | | +| atl.cpp:1143:5:1143:7 | ref arg s11 | atl.cpp:1144:10:1144:12 | s11 | | +| atl.cpp:1143:5:1143:7 | ref arg s11 | atl.cpp:1213:3:1213:3 | s11 | | +| atl.cpp:1146:20:1146:22 | call to CStringT | atl.cpp:1147:5:1147:7 | s12 | | +| atl.cpp:1146:20:1146:22 | call to CStringT | atl.cpp:1148:10:1148:12 | s12 | | +| atl.cpp:1146:20:1146:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s12 | | +| atl.cpp:1147:5:1147:7 | ref arg s12 | atl.cpp:1148:10:1148:12 | s12 | | +| atl.cpp:1147:5:1147:7 | ref arg s12 | atl.cpp:1213:3:1213:3 | s12 | | +| atl.cpp:1150:20:1150:22 | call to CStringT | atl.cpp:1151:5:1151:7 | s13 | | +| atl.cpp:1150:20:1150:22 | call to CStringT | atl.cpp:1152:10:1152:12 | s13 | | +| atl.cpp:1150:20:1150:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s13 | | +| atl.cpp:1151:5:1151:7 | ref arg s13 | atl.cpp:1152:10:1152:12 | s13 | | +| atl.cpp:1151:5:1151:7 | ref arg s13 | atl.cpp:1213:3:1213:3 | s13 | | +| atl.cpp:1154:20:1154:22 | call to CStringT | atl.cpp:1155:5:1155:7 | s14 | | +| atl.cpp:1154:20:1154:22 | call to CStringT | atl.cpp:1156:10:1156:12 | s14 | | +| atl.cpp:1154:20:1154:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s14 | | +| atl.cpp:1155:5:1155:7 | ref arg s14 | atl.cpp:1156:10:1156:12 | s14 | | +| atl.cpp:1155:5:1155:7 | ref arg s14 | atl.cpp:1213:3:1213:3 | s14 | | +| atl.cpp:1158:20:1158:22 | call to CStringT | atl.cpp:1159:5:1159:7 | s15 | | +| atl.cpp:1158:20:1158:22 | call to CStringT | atl.cpp:1160:10:1160:12 | s15 | | +| atl.cpp:1158:20:1158:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s15 | | +| atl.cpp:1159:5:1159:7 | ref arg s15 | atl.cpp:1160:10:1160:12 | s15 | | +| atl.cpp:1159:5:1159:7 | ref arg s15 | atl.cpp:1213:3:1213:3 | s15 | | +| atl.cpp:1162:20:1162:22 | call to CStringT | atl.cpp:1163:5:1163:7 | s16 | | +| atl.cpp:1162:20:1162:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s16 | | +| atl.cpp:1163:5:1163:7 | ref arg s16 | atl.cpp:1213:3:1213:3 | s16 | | +| atl.cpp:1165:20:1165:22 | call to CStringT | atl.cpp:1166:5:1166:7 | s17 | | +| atl.cpp:1165:20:1165:22 | call to CStringT | atl.cpp:1167:10:1167:12 | s17 | | +| atl.cpp:1165:20:1165:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s17 | | +| atl.cpp:1166:5:1166:7 | ref arg s17 | atl.cpp:1167:10:1167:12 | s17 | | +| atl.cpp:1166:5:1166:7 | ref arg s17 | atl.cpp:1213:3:1213:3 | s17 | | +| atl.cpp:1169:20:1169:22 | call to CStringT | atl.cpp:1170:5:1170:7 | s18 | | +| atl.cpp:1169:20:1169:22 | call to CStringT | atl.cpp:1171:10:1171:12 | s18 | | +| atl.cpp:1169:20:1169:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s18 | | +| atl.cpp:1170:5:1170:7 | ref arg s18 | atl.cpp:1171:10:1171:12 | s18 | | +| atl.cpp:1170:5:1170:7 | ref arg s18 | atl.cpp:1213:3:1213:3 | s18 | | +| atl.cpp:1175:20:1175:22 | call to CStringT | atl.cpp:1176:5:1176:7 | s20 | | +| atl.cpp:1175:20:1175:22 | call to CStringT | atl.cpp:1177:10:1177:12 | s20 | | +| atl.cpp:1175:20:1175:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s20 | | +| atl.cpp:1176:5:1176:7 | ref arg s20 | atl.cpp:1177:10:1177:12 | s20 | | +| atl.cpp:1176:5:1176:7 | ref arg s20 | atl.cpp:1213:3:1213:3 | s20 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1180:10:1180:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1181:10:1181:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1182:10:1182:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1195:5:1195:6 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1198:10:1198:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1199:10:1199:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1202:10:1202:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1204:10:1204:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1205:10:1205:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1206:10:1206:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1179:10:1179:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1181:10:1181:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1182:10:1182:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1195:5:1195:6 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1198:10:1198:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1199:10:1199:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1202:10:1202:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1204:10:1204:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1205:10:1205:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1206:10:1206:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1180:10:1180:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1182:10:1182:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1195:5:1195:6 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1198:10:1198:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1199:10:1199:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1202:10:1202:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1204:10:1204:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1205:10:1205:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1206:10:1206:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1181:10:1181:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1184:20:1184:22 | call to CStringT | atl.cpp:1185:5:1185:7 | s21 | | +| atl.cpp:1184:20:1184:22 | call to CStringT | atl.cpp:1186:10:1186:12 | s21 | | +| atl.cpp:1184:20:1184:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s21 | | +| atl.cpp:1185:5:1185:7 | ref arg s21 | atl.cpp:1186:10:1186:12 | s21 | | +| atl.cpp:1185:5:1185:7 | ref arg s21 | atl.cpp:1213:3:1213:3 | s21 | | +| atl.cpp:1188:20:1188:22 | call to CStringT | atl.cpp:1189:5:1189:7 | s22 | | +| atl.cpp:1188:20:1188:22 | call to CStringT | atl.cpp:1190:10:1190:12 | s22 | | +| atl.cpp:1188:20:1188:22 | call to CStringT | atl.cpp:1213:3:1213:3 | s22 | | +| atl.cpp:1189:5:1189:7 | ref arg s22 | atl.cpp:1190:10:1190:12 | s22 | | +| atl.cpp:1189:5:1189:7 | ref arg s22 | atl.cpp:1213:3:1213:3 | s22 | | +| atl.cpp:1194:10:1194:14 | bstr2 | atl.cpp:1195:22:1195:26 | bstr2 | | +| atl.cpp:1194:10:1194:14 | bstr2 | atl.cpp:1196:10:1196:14 | bstr2 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1198:10:1198:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1199:10:1199:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1202:10:1202:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1204:10:1204:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1205:10:1205:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1206:10:1206:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1195:5:1195:6 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1195:21:1195:26 | ref arg & ... | atl.cpp:1195:22:1195:26 | bstr2 [inner post update] | | +| atl.cpp:1195:21:1195:26 | ref arg & ... | atl.cpp:1196:10:1196:14 | bstr2 | | +| atl.cpp:1195:22:1195:26 | bstr2 | atl.cpp:1195:21:1195:26 | & ... | | +| atl.cpp:1201:16:1201:17 | 0 | atl.cpp:1202:29:1202:33 | start | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1205:10:1205:11 | s1 | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1206:10:1206:11 | s1 | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1204:10:1204:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1205:10:1205:11 | ref arg s1 | atl.cpp:1206:10:1206:11 | s1 | | +| atl.cpp:1205:10:1205:11 | ref arg s1 | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1205:10:1205:11 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1205:10:1205:11 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1205:10:1205:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1205:10:1205:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1205:10:1205:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1205:10:1205:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1206:10:1206:11 | ref arg s1 | atl.cpp:1207:10:1207:11 | s1 | | +| atl.cpp:1206:10:1206:11 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1206:10:1206:11 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1206:10:1206:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1206:10:1206:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1206:10:1206:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1206:10:1206:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1207:10:1207:11 | ref arg s1 | atl.cpp:1208:10:1208:11 | s1 | | +| atl.cpp:1207:10:1207:11 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1207:10:1207:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1207:10:1207:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1207:10:1207:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1207:10:1207:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1208:10:1208:11 | ref arg s1 | atl.cpp:1209:10:1209:11 | s1 | | +| atl.cpp:1208:10:1208:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1208:10:1208:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1208:10:1208:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1208:10:1208:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1209:10:1209:11 | ref arg s1 | atl.cpp:1210:10:1210:11 | s1 | | +| atl.cpp:1209:10:1209:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1209:10:1209:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1209:10:1209:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1210:10:1210:11 | ref arg s1 | atl.cpp:1211:10:1211:11 | s1 | | +| atl.cpp:1210:10:1210:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1210:10:1210:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1211:10:1211:11 | ref arg s1 | atl.cpp:1212:10:1212:11 | s1 | | +| atl.cpp:1211:10:1211:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1212:10:1212:11 | ref arg s1 | atl.cpp:1213:3:1213:3 | s1 | | +| atl.cpp:1220:21:1220:39 | call to source | atl.cpp:1221:10:1221:10 | d | | +| atl.cpp:1239:24:1239:45 | call to source | atl.cpp:1240:22:1240:22 | s | | +| atl.cpp:1239:24:1239:45 | call to source | atl.cpp:1243:3:1243:3 | s | | +| atl.cpp:1240:22:1240:22 | ref arg s | atl.cpp:1243:3:1243:3 | s | | +| atl.cpp:1240:22:1240:30 | call to CStrBufT | atl.cpp:1241:46:1241:46 | b | | +| atl.cpp:1240:22:1240:30 | call to CStrBufT | atl.cpp:1242:45:1242:45 | b | | +| atl.cpp:1241:46:1241:46 | ref arg b | atl.cpp:1242:45:1242:45 | b | | | bsd.cpp:17:11:17:16 | call to source | bsd.cpp:20:18:20:18 | s | | | bsd.cpp:18:12:18:15 | addr | bsd.cpp:20:22:20:25 | addr | | | bsd.cpp:18:12:18:15 | addr | bsd.cpp:23:8:23:11 | addr | | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 6996b3d1c66..b22b4cb59db 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -1,273 +1,273 @@ signatureMatches -| atl.cpp:70:3:70:15 | _U_STRINGorID | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:70:3:70:15 | _U_STRINGorID | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:71:3:71:15 | _U_STRINGorID | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:258:3:258:10 | CAtlList | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:258:3:258:10 | CAtlList | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:258:3:258:10 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:258:3:258:10 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:408:8:408:8 | operator= | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:408:8:408:8 | operator= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:410:3:410:10 | CComBSTR | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:410:3:410:10 | CComBSTR | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:412:3:412:10 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:412:3:412:10 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | -| atl.cpp:413:3:413:10 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:413:3:413:10 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | -| atl.cpp:414:3:414:10 | CComBSTR | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:414:3:414:10 | CComBSTR | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:415:3:415:10 | CComBSTR | (LPCSTR) | CComBSTR | Append | 0 | -| atl.cpp:415:3:415:10 | CComBSTR | (LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:416:3:416:10 | CComBSTR | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | -| atl.cpp:419:11:419:16 | Append | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:419:11:419:16 | Append | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:420:11:420:16 | Append | (wchar_t) | | operator+= | 0 | -| atl.cpp:420:11:420:16 | Append | (wchar_t) | CComBSTR | Append | 0 | -| atl.cpp:420:11:420:16 | Append | (wchar_t) | CSimpleStringT | operator+= | 0 | -| atl.cpp:421:11:421:16 | Append | (char) | | operator+= | 0 | -| atl.cpp:421:11:421:16 | Append | (char) | CComBSTR | Append | 0 | -| atl.cpp:421:11:421:16 | Append | (char) | CSimpleStringT | operator+= | 0 | -| atl.cpp:422:11:422:16 | Append | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:422:11:422:16 | Append | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:423:11:423:16 | Append | (LPCSTR) | CComBSTR | Append | 0 | -| atl.cpp:423:11:423:16 | Append | (LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:424:11:424:16 | Append | (LPCOLESTR,int) | CComBSTR | Append | 0 | -| atl.cpp:424:11:424:16 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:424:11:424:16 | Append | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:424:11:424:16 | Append | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:424:11:424:16 | Append | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:424:11:424:16 | Append | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:425:11:425:20 | AppendBSTR | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:426:11:426:21 | AppendBytes | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:426:11:426:21 | AppendBytes | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:426:11:426:21 | AppendBytes | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:426:11:426:21 | AppendBytes | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:426:11:426:21 | AppendBytes | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:427:11:427:21 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:427:11:427:21 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:427:11:427:21 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | -| atl.cpp:429:8:429:13 | Attach | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:439:8:439:17 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:439:8:439:17 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | -| atl.cpp:440:8:440:17 | LoadString | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:440:8:440:17 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:448:13:448:22 | operator+= | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:448:13:448:22 | operator+= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:449:13:449:22 | operator+= | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:449:13:449:22 | operator+= | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:539:3:539:15 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:539:3:539:15 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:539:3:539:15 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | -| atl.cpp:543:11:543:13 | Add | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:543:11:543:13 | Add | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:543:11:543:13 | Add | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | -| atl.cpp:545:11:545:13 | Add | (const T &,BOOL) | CComSafeArray | Add | 0 | -| atl.cpp:545:11:545:13 | Add | (const T &,BOOL) | CComSafeArray | Add | 1 | -| atl.cpp:611:3:611:8 | CPathT | (PCXSTR) | | operator+= | 0 | -| atl.cpp:611:3:611:8 | CPathT | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:611:3:611:8 | CPathT | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:616:8:616:19 | AddExtension | (PCXSTR) | | operator+= | 0 | -| atl.cpp:616:8:616:19 | AddExtension | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:616:8:616:19 | AddExtension | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:617:8:617:13 | Append | (PCXSTR) | | operator+= | 0 | -| atl.cpp:617:8:617:13 | Append | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:617:8:617:13 | Append | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:620:8:620:14 | Combine | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | -| atl.cpp:620:8:620:14 | Combine | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:620:8:620:14 | Combine | (const CStringT &,PCXSTR) | | operator+ | 1 | -| atl.cpp:620:8:620:14 | Combine | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:621:22:621:33 | CommonPrefix | (PCXSTR) | | operator+= | 0 | -| atl.cpp:621:22:621:33 | CommonPrefix | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:621:22:621:33 | CommonPrefix | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:658:23:658:32 | operator+= | (PCXSTR) | | operator+= | 0 | -| atl.cpp:658:23:658:32 | operator+= | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:658:23:658:32 | operator+= | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:764:8:764:10 | Add | (const deque &,const Allocator &) | deque | deque | 1 | -| atl.cpp:764:8:764:10 | Add | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:764:8:764:10 | Add | (const list &,const Allocator &) | list | list | 1 | -| atl.cpp:764:8:764:10 | Add | (const vector &,const Allocator &) | vector | vector | 1 | -| atl.cpp:764:8:764:10 | Add | (deque &&,const Allocator &) | deque | deque | 1 | -| atl.cpp:764:8:764:10 | Add | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:764:8:764:10 | Add | (list &&,const Allocator &) | list | list | 1 | -| atl.cpp:764:8:764:10 | Add | (vector &&,const Allocator &) | vector | vector | 1 | -| atl.cpp:775:8:775:12 | SetAt | (const deque &,const Allocator &) | deque | deque | 1 | -| atl.cpp:775:8:775:12 | SetAt | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:775:8:775:12 | SetAt | (const list &,const Allocator &) | list | list | 1 | -| atl.cpp:775:8:775:12 | SetAt | (const vector &,const Allocator &) | vector | vector | 1 | -| atl.cpp:775:8:775:12 | SetAt | (deque &&,const Allocator &) | deque | deque | 1 | -| atl.cpp:775:8:775:12 | SetAt | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:775:8:775:12 | SetAt | (list &&,const Allocator &) | list | list | 1 | -| atl.cpp:775:8:775:12 | SetAt | (vector &&,const Allocator &) | vector | vector | 1 | -| atl.cpp:776:8:776:17 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| atl.cpp:776:8:776:17 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| atl.cpp:776:8:776:17 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | -| atl.cpp:776:8:776:17 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| atl.cpp:776:8:776:17 | SetAtIndex | (size_type,const T &,const Allocator &) | deque | deque | 1 | -| atl.cpp:776:8:776:17 | SetAtIndex | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| atl.cpp:776:8:776:17 | SetAtIndex | (size_type,const T &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:776:8:776:17 | SetAtIndex | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| atl.cpp:776:8:776:17 | SetAtIndex | (size_type,const T &,const Allocator &) | list | list | 1 | -| atl.cpp:776:8:776:17 | SetAtIndex | (size_type,const T &,const Allocator &) | list | list | 2 | -| atl.cpp:776:8:776:17 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 1 | -| atl.cpp:776:8:776:17 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| atl.cpp:841:15:841:26 | SetExtraInfo | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:842:15:842:25 | SetHostName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:843:15:843:25 | SetPassword | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:846:15:846:27 | SetSchemeName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:847:15:847:24 | SetUrlPath | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:848:15:848:25 | SetUserName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:914:3:914:16 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:914:3:914:16 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:914:3:914:16 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | -| atl.cpp:914:3:914:16 | CSimpleStringT | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:914:3:914:16 | CSimpleStringT | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 2 | -| atl.cpp:915:3:915:16 | CSimpleStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:915:3:915:16 | CSimpleStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:915:3:915:16 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:915:3:915:16 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:915:3:915:16 | CSimpleStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:915:3:915:16 | CSimpleStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:916:3:916:16 | CSimpleStringT | (const CSimpleStringT &) | | operator+= | 0 | -| atl.cpp:916:3:916:16 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:916:3:916:16 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | operator+= | 0 | -| atl.cpp:916:3:916:16 | CSimpleStringT | (const CSimpleStringT &) | CStringT | CStringT | 0 | -| atl.cpp:916:3:916:16 | CSimpleStringT | (const CSimpleStringT &) | CStringT | operator= | 0 | -| atl.cpp:920:8:920:13 | Append | (const CSimpleStringT &) | | operator+= | 0 | -| atl.cpp:920:8:920:13 | Append | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:920:8:920:13 | Append | (const CSimpleStringT &) | CSimpleStringT | operator+= | 0 | -| atl.cpp:920:8:920:13 | Append | (const CSimpleStringT &) | CStringT | CStringT | 0 | -| atl.cpp:920:8:920:13 | Append | (const CSimpleStringT &) | CStringT | operator= | 0 | -| atl.cpp:921:8:921:13 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:921:8:921:13 | Append | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:921:8:921:13 | Append | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:921:8:921:13 | Append | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:921:8:921:13 | Append | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:922:8:922:13 | Append | (PCXSTR) | | operator+= | 0 | -| atl.cpp:922:8:922:13 | Append | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:922:8:922:13 | Append | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:926:15:926:23 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:926:15:926:23 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:926:15:926:23 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:926:15:926:23 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | -| atl.cpp:926:15:926:23 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | -| atl.cpp:926:15:926:23 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| atl.cpp:927:15:927:23 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:927:15:927:23 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:927:15:927:23 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:927:15:927:23 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| atl.cpp:937:8:937:12 | SetAt | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:937:8:937:12 | SetAt | (const CStringT &,char) | | operator+ | 1 | -| atl.cpp:937:8:937:12 | SetAt | (int,XCHAR) | CStringT | Insert | 0 | -| atl.cpp:937:8:937:12 | SetAt | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:938:8:938:16 | SetString | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:938:8:938:16 | SetString | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:938:8:938:16 | SetString | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:938:8:938:16 | SetString | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:938:8:938:16 | SetString | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:939:8:939:16 | SetString | (PCXSTR) | | operator+= | 0 | -| atl.cpp:939:8:939:16 | SetString | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:939:8:939:16 | SetString | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1035:3:1035:10 | CStringT | (const VARIANT &) | | operator+= | 0 | -| atl.cpp:1035:3:1035:10 | CStringT | (const VARIANT &) | CStringT | CStringT | 0 | -| atl.cpp:1035:3:1035:10 | CStringT | (const VARIANT &) | CStringT | operator= | 0 | -| atl.cpp:1036:3:1036:10 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1036:3:1036:10 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1036:3:1036:10 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:1036:3:1036:10 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1036:3:1036:10 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1036:3:1036:10 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1037:3:1037:10 | CStringT | (const CStringT &) | CStringT | CStringT | 0 | -| atl.cpp:1037:3:1037:10 | CStringT | (const CStringT &) | CStringT | operator= | 0 | -| atl.cpp:1041:3:1041:10 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1041:3:1041:10 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1041:3:1041:10 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1041:3:1041:10 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:1041:3:1041:10 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1041:3:1041:10 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:3:1042:10 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:3:1042:10 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1042:3:1042:10 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:3:1042:10 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:1042:3:1042:10 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:3:1042:10 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1044:3:1044:10 | CStringT | (char *) | CStringT | CStringT | 0 | -| atl.cpp:1045:3:1045:10 | CStringT | (unsigned char *) | CStringT | CStringT | 0 | -| atl.cpp:1046:3:1046:10 | CStringT | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:1048:3:1048:10 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1048:3:1048:10 | CStringT | (char,int) | CStringT | CStringT | 0 | -| atl.cpp:1048:3:1048:10 | CStringT | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1048:3:1048:10 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1048:3:1048:10 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1048:3:1048:10 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:3:1049:10 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1049:3:1049:10 | CStringT | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:3:1049:10 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:3:1049:10 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:3:1049:10 | CStringT | (wchar_t,int) | CStringT | CStringT | 0 | -| atl.cpp:1049:3:1049:10 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 0 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (PCXSTR,...) | CStringT | Format | 0 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (PCXSTR,...) | CStringT | Format | 1 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 0 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (UINT,...) | CStringT | Format | 1 | -| atl.cpp:1060:8:1060:19 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (PCXSTR,...) | CStringT | Format | 1 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 0 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (UINT,...) | CStringT | Format | 0 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (UINT,...) | CStringT | Format | 1 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 0 | -| atl.cpp:1061:8:1061:19 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1069:7:1069:12 | Insert | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:1069:7:1069:12 | Insert | (const CStringT &,PCXSTR) | | operator+ | 1 | -| atl.cpp:1069:7:1069:12 | Insert | (int,PCXSTR) | CStringT | Insert | 0 | -| atl.cpp:1069:7:1069:12 | Insert | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:1070:7:1070:12 | Insert | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:1070:7:1070:12 | Insert | (int,XCHAR) | CStringT | Insert | 0 | -| atl.cpp:1070:7:1070:12 | Insert | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:1074:8:1074:17 | LoadString | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:1074:8:1074:17 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:1078:12:1078:14 | Mid | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1078:12:1078:14 | Mid | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1078:12:1078:14 | Mid | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1078:12:1078:14 | Mid | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1078:12:1078:14 | Mid | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1080:7:1080:13 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | -| atl.cpp:1080:7:1080:13 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:1080:7:1080:13 | Replace | (const CStringT &,PCXSTR) | | operator+ | 1 | -| atl.cpp:1080:7:1080:13 | Replace | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:1081:7:1081:13 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 0 | -| atl.cpp:1081:7:1081:13 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:1081:7:1081:13 | Replace | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:1084:12:1084:24 | SpanExcluding | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1084:12:1084:24 | SpanExcluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1084:12:1084:24 | SpanExcluding | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1085:12:1085:24 | SpanIncluding | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1085:12:1085:24 | SpanIncluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1085:12:1085:24 | SpanIncluding | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1087:13:1087:16 | Trim | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1088:13:1088:16 | Trim | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1088:13:1088:16 | Trim | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1088:13:1088:16 | Trim | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1090:13:1090:20 | TrimLeft | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1091:13:1091:20 | TrimLeft | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1091:13:1091:20 | TrimLeft | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1091:13:1091:20 | TrimLeft | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1093:13:1093:21 | TrimRight | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1094:13:1094:21 | TrimRight | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1094:13:1094:21 | TrimRight | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1094:13:1094:21 | TrimRight | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:259:5:259:12 | CAtlList | (UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:259:5:259:12 | CAtlList | (UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:409:10:409:10 | operator= | (const CComBSTR &) | CComBSTR | Append | 0 | +| atl.cpp:409:10:409:10 | operator= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | +| atl.cpp:411:5:411:12 | CComBSTR | (const CComBSTR &) | CComBSTR | Append | 0 | +| atl.cpp:411:5:411:12 | CComBSTR | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | +| atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | +| atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | Append | 0 | +| atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | Append | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:417:5:417:12 | CComBSTR | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | +| atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | Append | 0 | +| atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | +| atl.cpp:421:13:421:18 | Append | (wchar_t) | | operator+= | 0 | +| atl.cpp:421:13:421:18 | Append | (wchar_t) | CComBSTR | Append | 0 | +| atl.cpp:421:13:421:18 | Append | (wchar_t) | CSimpleStringT | operator+= | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | | operator+= | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | CComBSTR | Append | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | CSimpleStringT | operator+= | 0 | +| atl.cpp:423:13:423:18 | Append | (LPCOLESTR) | CComBSTR | Append | 0 | +| atl.cpp:423:13:423:18 | Append | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | Append | 0 | +| atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 0 | +| atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:425:13:425:18 | Append | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:425:13:425:18 | Append | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:425:13:425:18 | Append | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:425:13:425:18 | Append | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:426:13:426:22 | AppendBSTR | (wchar_t *) | CStringT | CStringT | 0 | +| atl.cpp:427:13:427:23 | AppendBytes | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | Add | 0 | +| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | +| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | +| atl.cpp:430:10:430:15 | Attach | (wchar_t *) | CStringT | CStringT | 0 | +| atl.cpp:440:10:440:19 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:440:10:440:19 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | +| atl.cpp:441:10:441:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:441:10:441:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | Append | 0 | +| atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | +| atl.cpp:450:15:450:24 | operator+= | (LPCOLESTR) | CComBSTR | Append | 0 | +| atl.cpp:450:15:450:24 | operator+= | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | Add | 0 | +| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | +| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | +| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | Add | 0 | +| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | +| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | +| atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 0 | +| atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 1 | +| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | | operator+= | 0 | +| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | | operator+= | 0 | +| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:618:10:618:15 | Append | (PCXSTR) | | operator+= | 0 | +| atl.cpp:618:10:618:15 | Append | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:618:10:618:15 | Append | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:621:10:621:16 | Combine | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | +| atl.cpp:621:10:621:16 | Combine | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | +| atl.cpp:621:10:621:16 | Combine | (const CStringT &,PCXSTR) | | operator+ | 1 | +| atl.cpp:621:10:621:16 | Combine | (int,PCXSTR) | CStringT | Insert | 1 | +| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | | operator+= | 0 | +| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | | operator+= | 0 | +| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:765:10:765:12 | Add | (const deque &,const Allocator &) | deque | deque | 1 | +| atl.cpp:765:10:765:12 | Add | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | +| atl.cpp:765:10:765:12 | Add | (const list &,const Allocator &) | list | list | 1 | +| atl.cpp:765:10:765:12 | Add | (const vector &,const Allocator &) | vector | vector | 1 | +| atl.cpp:765:10:765:12 | Add | (deque &&,const Allocator &) | deque | deque | 1 | +| atl.cpp:765:10:765:12 | Add | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | +| atl.cpp:765:10:765:12 | Add | (list &&,const Allocator &) | list | list | 1 | +| atl.cpp:765:10:765:12 | Add | (vector &&,const Allocator &) | vector | vector | 1 | +| atl.cpp:776:10:776:14 | SetAt | (const deque &,const Allocator &) | deque | deque | 1 | +| atl.cpp:776:10:776:14 | SetAt | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | +| atl.cpp:776:10:776:14 | SetAt | (const list &,const Allocator &) | list | list | 1 | +| atl.cpp:776:10:776:14 | SetAt | (const vector &,const Allocator &) | vector | vector | 1 | +| atl.cpp:776:10:776:14 | SetAt | (deque &&,const Allocator &) | deque | deque | 1 | +| atl.cpp:776:10:776:14 | SetAt | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | +| atl.cpp:776:10:776:14 | SetAt | (list &&,const Allocator &) | list | list | 1 | +| atl.cpp:776:10:776:14 | SetAt | (vector &&,const Allocator &) | vector | vector | 1 | +| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | +| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | +| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | +| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | +| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | deque | deque | 1 | +| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | deque | deque | 2 | +| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | forward_list | forward_list | 1 | +| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | +| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | list | list | 1 | +| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | list | list | 2 | +| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 1 | +| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 2 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | +| atl.cpp:915:5:915:18 | CSimpleStringT | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:915:5:915:18 | CSimpleStringT | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 2 | +| atl.cpp:916:5:916:18 | CSimpleStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:916:5:916:18 | CSimpleStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:916:5:916:18 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:916:5:916:18 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:916:5:916:18 | CSimpleStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:916:5:916:18 | CSimpleStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | | operator+= | 0 | +| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | operator+= | 0 | +| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CStringT | CStringT | 0 | +| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CStringT | operator= | 0 | +| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | | operator+= | 0 | +| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CSimpleStringT | operator+= | 0 | +| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CStringT | CStringT | 0 | +| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CStringT | operator= | 0 | +| atl.cpp:922:10:922:15 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:922:10:922:15 | Append | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:922:10:922:15 | Append | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:922:10:922:15 | Append | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:922:10:922:15 | Append | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:923:10:923:15 | Append | (PCXSTR) | | operator+= | 0 | +| atl.cpp:923:10:923:15 | Append | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:923:10:923:15 | Append | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | +| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | +| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | +| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | +| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | +| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | +| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | +| atl.cpp:938:10:938:14 | SetAt | (XCHAR,XCHAR) | CStringT | Replace | 1 | +| atl.cpp:938:10:938:14 | SetAt | (const CStringT &,char) | | operator+ | 1 | +| atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 0 | +| atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 1 | +| atl.cpp:939:10:939:18 | SetString | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:939:10:939:18 | SetString | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:939:10:939:18 | SetString | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:939:10:939:18 | SetString | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:939:10:939:18 | SetString | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | | operator+= | 0 | +| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | | operator+= | 0 | +| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | CStringT | 0 | +| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | operator= | 0 | +| atl.cpp:1037:5:1037:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1037:5:1037:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1038:5:1038:12 | CStringT | (const CStringT &) | CStringT | CStringT | 0 | +| atl.cpp:1038:5:1038:12 | CStringT | (const CStringT &) | CStringT | operator= | 0 | +| atl.cpp:1042:5:1042:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1042:5:1042:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1043:5:1043:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1045:5:1045:12 | CStringT | (char *) | CStringT | CStringT | 0 | +| atl.cpp:1046:5:1046:12 | CStringT | (unsigned char *) | CStringT | CStringT | 0 | +| atl.cpp:1047:5:1047:12 | CStringT | (wchar_t *) | CStringT | CStringT | 0 | +| atl.cpp:1049:5:1049:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 0 | +| atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 0 | +| atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 0 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 0 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 0 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | Format | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 0 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | Format | 0 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | Format | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 0 | +| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 1 | +| atl.cpp:1070:9:1070:14 | Insert | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | +| atl.cpp:1070:9:1070:14 | Insert | (const CStringT &,PCXSTR) | | operator+ | 1 | +| atl.cpp:1070:9:1070:14 | Insert | (int,PCXSTR) | CStringT | Insert | 0 | +| atl.cpp:1070:9:1070:14 | Insert | (int,PCXSTR) | CStringT | Insert | 1 | +| atl.cpp:1071:9:1071:14 | Insert | (XCHAR,XCHAR) | CStringT | Replace | 1 | +| atl.cpp:1071:9:1071:14 | Insert | (int,XCHAR) | CStringT | Insert | 0 | +| atl.cpp:1071:9:1071:14 | Insert | (int,XCHAR) | CStringT | Insert | 1 | +| atl.cpp:1075:10:1075:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:1075:10:1075:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:1079:14:1079:16 | Mid | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:1081:9:1081:15 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | +| atl.cpp:1081:9:1081:15 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | +| atl.cpp:1081:9:1081:15 | Replace | (const CStringT &,PCXSTR) | | operator+ | 1 | +| atl.cpp:1081:9:1081:15 | Replace | (int,PCXSTR) | CStringT | Insert | 1 | +| atl.cpp:1082:9:1082:15 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 0 | +| atl.cpp:1082:9:1082:15 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 1 | +| atl.cpp:1082:9:1082:15 | Replace | (int,XCHAR) | CStringT | Insert | 1 | +| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | | operator+= | 0 | +| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | | operator+= | 0 | +| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:1088:15:1088:18 | Trim | (XCHAR) | CStringT | operator= | 0 | +| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | | operator+= | 0 | +| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:1091:15:1091:22 | TrimLeft | (XCHAR) | CStringT | operator= | 0 | +| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | | operator+= | 0 | +| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | CStringT | operator= | 0 | +| atl.cpp:1094:15:1094:23 | TrimRight | (XCHAR) | CStringT | operator= | 0 | +| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | | operator+= | 0 | +| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | CSimpleStringT | operator+= | 0 | +| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | CStringT | operator= | 0 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (char,int) | CStringT | CStringT | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const XCHAR *,int) | CStringT | CStringT | 1 | @@ -907,313 +907,313 @@ getParameterTypeName | atl.cpp:4:8:4:11 | sink | 0 | ... | | atl.cpp:29:8:29:8 | operator= | 0 | __POSITION && | | atl.cpp:29:8:29:8 | operator= | 0 | const __POSITION & | -| atl.cpp:51:16:51:16 | operator= | 0 | const tagSAFEARRAYBOUND & | -| atl.cpp:51:16:51:16 | operator= | 0 | tagSAFEARRAYBOUND && | -| atl.cpp:56:16:56:16 | operator= | 0 | const tagVARIANT & | -| atl.cpp:56:16:56:16 | operator= | 0 | tagVARIANT && | -| atl.cpp:60:16:60:16 | operator= | 0 | const tagSAFEARRAY & | -| atl.cpp:60:16:60:16 | operator= | 0 | tagSAFEARRAY && | -| atl.cpp:69:8:69:8 | _U_STRINGorID | 0 | _U_STRINGorID && | -| atl.cpp:69:8:69:8 | _U_STRINGorID | 0 | const _U_STRINGorID & | -| atl.cpp:69:8:69:8 | operator= | 0 | _U_STRINGorID && | -| atl.cpp:69:8:69:8 | operator= | 0 | const _U_STRINGorID & | -| atl.cpp:70:3:70:15 | _U_STRINGorID | 0 | UINT | -| atl.cpp:70:3:70:15 | _U_STRINGorID | 0 | unsigned int | -| atl.cpp:71:3:71:15 | _U_STRINGorID | 0 | LPCTSTR | -| atl.cpp:71:3:71:15 | _U_STRINGorID | 0 | const char * | -| atl.cpp:195:10:195:12 | Add | 0 | INARGTYPclass:0 | -| atl.cpp:197:10:197:15 | Append | 0 | const CAtlArray & | -| atl.cpp:198:8:198:11 | Copy | 0 | const CAtlArray & | -| atl.cpp:200:6:200:10 | GetAt | 0 | size_t | -| atl.cpp:204:8:204:20 | InsertArrayAt | 0 | size_t | -| atl.cpp:204:8:204:20 | InsertArrayAt | 1 | const CAtlArray * | -| atl.cpp:205:8:205:15 | InsertAt | 0 | size_t | -| atl.cpp:205:8:205:15 | InsertAt | 1 | INARGTYPclass:0 | -| atl.cpp:205:8:205:15 | InsertAt | 2 | size_t | -| atl.cpp:210:8:210:16 | SetAtGrow | 0 | size_t | -| atl.cpp:210:8:210:16 | SetAtGrow | 1 | INARGTYPclass:0 | -| atl.cpp:212:6:212:15 | operator[] | 0 | size_t | -| atl.cpp:258:3:258:10 | CAtlList | 0 | UINT | -| atl.cpp:258:3:258:10 | CAtlList | 0 | UINT | -| atl.cpp:258:3:258:10 | CAtlList | 0 | unsigned int | -| atl.cpp:258:3:258:10 | CAtlList | 0 | unsigned int | -| atl.cpp:261:12:261:18 | AddHead | 0 | INARGTYPclass:0 | -| atl.cpp:261:12:261:18 | AddHead | 0 | INARGTYPclass:0 | -| atl.cpp:262:8:262:18 | AddHeadList | 0 | const CAtlList * | -| atl.cpp:262:8:262:18 | AddHeadList | 0 | const CAtlList * | -| atl.cpp:264:12:264:18 | AddTail | 0 | INARGTYPclass:0 | -| atl.cpp:264:12:264:18 | AddTail | 0 | INARGTYPclass:0 | -| atl.cpp:265:8:265:18 | AddTailList | 0 | const CAtlList * | -| atl.cpp:265:8:265:18 | AddTailList | 0 | const CAtlList * | -| atl.cpp:266:12:266:15 | Find | 0 | INARGTYPclass:0 | -| atl.cpp:266:12:266:15 | Find | 0 | INARGTYPclass:0 | -| atl.cpp:266:12:266:15 | Find | 1 | POSITION | -| atl.cpp:266:12:266:15 | Find | 1 | POSITION | -| atl.cpp:266:12:266:15 | Find | 1 | __POSITION * | -| atl.cpp:266:12:266:15 | Find | 1 | __POSITION * | -| atl.cpp:267:12:267:20 | FindIndex | 0 | size_t | -| atl.cpp:267:12:267:20 | FindIndex | 0 | size_t | -| atl.cpp:268:6:268:10 | GetAt | 0 | POSITION | -| atl.cpp:268:6:268:10 | GetAt | 0 | POSITION | -| atl.cpp:268:6:268:10 | GetAt | 0 | __POSITION * | -| atl.cpp:268:6:268:10 | GetAt | 0 | __POSITION * | -| atl.cpp:281:12:281:22 | InsertAfter | 0 | POSITION | -| atl.cpp:281:12:281:22 | InsertAfter | 0 | POSITION | -| atl.cpp:281:12:281:22 | InsertAfter | 0 | __POSITION * | -| atl.cpp:281:12:281:22 | InsertAfter | 0 | __POSITION * | -| atl.cpp:281:12:281:22 | InsertAfter | 1 | INARGTYPclass:0 | -| atl.cpp:281:12:281:22 | InsertAfter | 1 | INARGTYPclass:0 | -| atl.cpp:282:12:282:23 | InsertBefore | 0 | POSITION | -| atl.cpp:282:12:282:23 | InsertBefore | 0 | POSITION | -| atl.cpp:282:12:282:23 | InsertBefore | 0 | __POSITION * | -| atl.cpp:282:12:282:23 | InsertBefore | 0 | __POSITION * | -| atl.cpp:282:12:282:23 | InsertBefore | 1 | INARGTYPclass:0 | -| atl.cpp:282:12:282:23 | InsertBefore | 1 | INARGTYPclass:0 | -| atl.cpp:292:8:292:12 | SetAt | 0 | POSITION | -| atl.cpp:292:8:292:12 | SetAt | 0 | POSITION | -| atl.cpp:292:8:292:12 | SetAt | 0 | __POSITION * | -| atl.cpp:292:8:292:12 | SetAt | 0 | __POSITION * | -| atl.cpp:292:8:292:12 | SetAt | 1 | INARGTYPclass:0 | -| atl.cpp:292:8:292:12 | SetAt | 1 | INARGTYPclass:0 | -| atl.cpp:402:8:402:8 | operator= | 0 | IUnknown && | -| atl.cpp:402:8:402:8 | operator= | 0 | const IUnknown & | -| atl.cpp:404:8:404:8 | operator= | 0 | ISequentialStream && | -| atl.cpp:404:8:404:8 | operator= | 0 | const ISequentialStream & | -| atl.cpp:406:8:406:8 | operator= | 0 | IStream && | -| atl.cpp:406:8:406:8 | operator= | 0 | const IStream & | -| atl.cpp:408:8:408:8 | operator= | 0 | const CComBSTR & | -| atl.cpp:410:3:410:10 | CComBSTR | 0 | const CComBSTR & | -| atl.cpp:411:3:411:10 | CComBSTR | 0 | int | -| atl.cpp:412:3:412:10 | CComBSTR | 0 | int | -| atl.cpp:412:3:412:10 | CComBSTR | 1 | LPCOLESTR | -| atl.cpp:412:3:412:10 | CComBSTR | 1 | const wchar_t * | -| atl.cpp:413:3:413:10 | CComBSTR | 0 | int | -| atl.cpp:413:3:413:10 | CComBSTR | 1 | LPCSTR | -| atl.cpp:413:3:413:10 | CComBSTR | 1 | const char * | -| atl.cpp:414:3:414:10 | CComBSTR | 0 | LPCOLESTR | -| atl.cpp:414:3:414:10 | CComBSTR | 0 | const wchar_t * | -| atl.cpp:415:3:415:10 | CComBSTR | 0 | LPCSTR | -| atl.cpp:415:3:415:10 | CComBSTR | 0 | const char * | -| atl.cpp:416:3:416:10 | CComBSTR | 0 | CComBSTR && | -| atl.cpp:419:11:419:16 | Append | 0 | const CComBSTR & | -| atl.cpp:420:11:420:16 | Append | 0 | wchar_t | -| atl.cpp:421:11:421:16 | Append | 0 | char | -| atl.cpp:422:11:422:16 | Append | 0 | LPCOLESTR | -| atl.cpp:422:11:422:16 | Append | 0 | const wchar_t * | -| atl.cpp:423:11:423:16 | Append | 0 | LPCSTR | -| atl.cpp:423:11:423:16 | Append | 0 | const char * | -| atl.cpp:424:11:424:16 | Append | 0 | LPCOLESTR | -| atl.cpp:424:11:424:16 | Append | 0 | const wchar_t * | -| atl.cpp:424:11:424:16 | Append | 1 | int | -| atl.cpp:425:11:425:20 | AppendBSTR | 0 | BSTR | -| atl.cpp:425:11:425:20 | AppendBSTR | 0 | wchar_t * | -| atl.cpp:426:11:426:21 | AppendBytes | 0 | const char * | -| atl.cpp:426:11:426:21 | AppendBytes | 1 | int | -| atl.cpp:427:11:427:21 | ArrayToBSTR | 0 | const SAFEARRAY * | -| atl.cpp:427:11:427:21 | ArrayToBSTR | 0 | const tagSAFEARRAY * | -| atl.cpp:428:11:428:20 | AssignBSTR | 0 | const BSTR | -| atl.cpp:428:11:428:20 | AssignBSTR | 0 | const wchar_t * | -| atl.cpp:429:8:429:13 | Attach | 0 | BSTR | -| atl.cpp:429:8:429:13 | Attach | 0 | wchar_t * | -| atl.cpp:430:11:430:21 | BSTRToArray | 0 | LPSAFEARRAY * | -| atl.cpp:430:11:430:21 | BSTRToArray | 0 | tagSAFEARRAY ** | -| atl.cpp:433:11:433:16 | CopyTo | 0 | BSTR * | -| atl.cpp:433:11:433:16 | CopyTo | 0 | wchar_t ** | -| atl.cpp:435:11:435:16 | CopyTo | 0 | VARIANT * | -| atl.cpp:435:11:435:16 | CopyTo | 0 | tagVARIANT * | -| atl.cpp:439:8:439:17 | LoadString | 0 | HINSTANCE | -| atl.cpp:439:8:439:17 | LoadString | 0 | void * | -| atl.cpp:439:8:439:17 | LoadString | 1 | UINT | -| atl.cpp:439:8:439:17 | LoadString | 1 | unsigned int | -| atl.cpp:440:8:440:17 | LoadString | 0 | UINT | -| atl.cpp:440:8:440:17 | LoadString | 0 | unsigned int | -| atl.cpp:441:11:441:24 | ReadFromStream | 0 | IStream * | -| atl.cpp:443:11:443:23 | WriteToStream | 0 | IStream * | -| atl.cpp:448:13:448:22 | operator+= | 0 | const CComBSTR & | -| atl.cpp:449:13:449:22 | operator+= | 0 | LPCOLESTR | -| atl.cpp:449:13:449:22 | operator+= | 0 | const wchar_t * | -| atl.cpp:539:3:539:15 | CComSafeArray | 0 | const SAFEARRAY * | -| atl.cpp:539:3:539:15 | CComSafeArray | 0 | const tagSAFEARRAY * | -| atl.cpp:543:11:543:13 | Add | 0 | const SAFEARRAY * | -| atl.cpp:543:11:543:13 | Add | 0 | const tagSAFEARRAY * | -| atl.cpp:545:11:545:13 | Add | 0 | const class:0 & | -| atl.cpp:545:11:545:13 | Add | 1 | BOOL | -| atl.cpp:545:11:545:13 | Add | 1 | bool | -| atl.cpp:553:6:553:10 | GetAt | 0 | LONG | -| atl.cpp:553:6:553:10 | GetAt | 0 | long | -| atl.cpp:564:11:564:15 | SetAt | 0 | LONG | -| atl.cpp:564:11:564:15 | SetAt | 0 | long | -| atl.cpp:564:11:564:15 | SetAt | 1 | const class:0 & | -| atl.cpp:564:11:564:15 | SetAt | 2 | BOOL | -| atl.cpp:564:11:564:15 | SetAt | 2 | bool | -| atl.cpp:566:6:566:15 | operator[] | 0 | long | -| atl.cpp:567:6:567:15 | operator[] | 0 | int | -| atl.cpp:611:3:611:8 | CPathT | 0 | PCXSTR | -| atl.cpp:611:3:611:8 | CPathT | 0 | class:0 | -| atl.cpp:612:3:612:8 | CPathT | 0 | const CPathT & | -| atl.cpp:616:8:616:19 | AddExtension | 0 | PCXSTR | -| atl.cpp:616:8:616:19 | AddExtension | 0 | class:0 | -| atl.cpp:617:8:617:13 | Append | 0 | PCXSTR | -| atl.cpp:617:8:617:13 | Append | 0 | class:0 | -| atl.cpp:620:8:620:14 | Combine | 0 | PCXSTR | -| atl.cpp:620:8:620:14 | Combine | 0 | class:0 | -| atl.cpp:620:8:620:14 | Combine | 1 | PCXSTR | -| atl.cpp:620:8:620:14 | Combine | 1 | class:0 | -| atl.cpp:621:22:621:33 | CommonPrefix | 0 | PCXSTR | -| atl.cpp:621:22:621:33 | CommonPrefix | 0 | class:0 | -| atl.cpp:658:23:658:32 | operator+= | 0 | PCXSTR | -| atl.cpp:658:23:658:32 | operator+= | 0 | class:0 | -| atl.cpp:718:8:718:10 | Add | 0 | const class:0 & | -| atl.cpp:719:7:719:10 | Find | 0 | const class:0 & | -| atl.cpp:730:6:730:15 | operator[] | 0 | int | -| atl.cpp:731:21:731:29 | operator= | 0 | const CSimpleArray & | -| atl.cpp:764:8:764:10 | Add | 0 | const class:0 & | -| atl.cpp:764:8:764:10 | Add | 1 | const class:1 & | -| atl.cpp:765:7:765:13 | FindKey | 0 | const class:0 & | -| atl.cpp:766:7:766:13 | FindVal | 0 | const class:1 & | -| atl.cpp:769:9:769:18 | GetValueAt | 0 | int | -| atl.cpp:770:8:770:13 | Lookup | 0 | const class:0 & | -| atl.cpp:774:8:774:20 | ReverseLookup | 0 | const class:1 & | -| atl.cpp:775:8:775:12 | SetAt | 0 | const class:0 & | -| atl.cpp:775:8:775:12 | SetAt | 1 | const class:1 & | -| atl.cpp:776:8:776:17 | SetAtIndex | 0 | int | -| atl.cpp:776:8:776:17 | SetAtIndex | 1 | const class:0 & | -| atl.cpp:776:8:776:17 | SetAtIndex | 2 | const class:1 & | -| atl.cpp:815:9:815:17 | operator= | 0 | const CUrl & | -| atl.cpp:817:3:817:6 | CUrl | 0 | const CUrl & | -| atl.cpp:820:15:820:26 | Canonicalize | 0 | DWORD | -| atl.cpp:820:15:820:26 | Canonicalize | 0 | unsigned long | -| atl.cpp:823:8:823:15 | CrackUrl | 0 | LPCTSTR | -| atl.cpp:823:8:823:15 | CrackUrl | 0 | const char * | -| atl.cpp:823:8:823:15 | CrackUrl | 1 | DWORD | -| atl.cpp:823:8:823:15 | CrackUrl | 1 | unsigned long | -| atl.cpp:824:15:824:23 | CreateUrl | 0 | LPTSTR | -| atl.cpp:824:15:824:23 | CreateUrl | 0 | char * | -| atl.cpp:824:15:824:23 | CreateUrl | 1 | DWORD * | -| atl.cpp:824:15:824:23 | CreateUrl | 1 | unsigned long * | -| atl.cpp:824:15:824:23 | CreateUrl | 2 | DWORD | -| atl.cpp:824:15:824:23 | CreateUrl | 2 | unsigned long | -| atl.cpp:841:15:841:26 | SetExtraInfo | 0 | LPCTSTR | -| atl.cpp:841:15:841:26 | SetExtraInfo | 0 | const char * | -| atl.cpp:842:15:842:25 | SetHostName | 0 | LPCTSTR | -| atl.cpp:842:15:842:25 | SetHostName | 0 | const char * | -| atl.cpp:843:15:843:25 | SetPassword | 0 | LPCTSTR | -| atl.cpp:843:15:843:25 | SetPassword | 0 | const char * | -| atl.cpp:844:15:844:27 | SetPortNumber | 0 | ATL_URL_PORT | -| atl.cpp:844:15:844:27 | SetPortNumber | 0 | unsigned short | -| atl.cpp:845:15:845:23 | SetScheme | 0 | ATL_URL_SCHEME | -| atl.cpp:846:15:846:27 | SetSchemeName | 0 | LPCTSTR | -| atl.cpp:846:15:846:27 | SetSchemeName | 0 | const char * | -| atl.cpp:847:15:847:24 | SetUrlPath | 0 | LPCTSTR | -| atl.cpp:847:15:847:24 | SetUrlPath | 0 | const char * | -| atl.cpp:848:15:848:25 | SetUserName | 0 | LPCTSTR | -| atl.cpp:848:15:848:25 | SetUserName | 0 | const char * | -| atl.cpp:903:8:903:8 | operator= | 0 | IAtlStringMgr && | -| atl.cpp:903:8:903:8 | operator= | 0 | const IAtlStringMgr & | -| atl.cpp:914:3:914:16 | CSimpleStringT | 0 | const XCHAR * | -| atl.cpp:914:3:914:16 | CSimpleStringT | 0 | const char * | -| atl.cpp:914:3:914:16 | CSimpleStringT | 1 | int | -| atl.cpp:914:3:914:16 | CSimpleStringT | 2 | IAtlStringMgr * | -| atl.cpp:915:3:915:16 | CSimpleStringT | 0 | PCXSTR | -| atl.cpp:915:3:915:16 | CSimpleStringT | 0 | const class:0 * | -| atl.cpp:915:3:915:16 | CSimpleStringT | 1 | IAtlStringMgr * | -| atl.cpp:916:3:916:16 | CSimpleStringT | 0 | const CSimpleStringT & | -| atl.cpp:920:8:920:13 | Append | 0 | const CSimpleStringT & | -| atl.cpp:921:8:921:13 | Append | 0 | PCXSTR | -| atl.cpp:921:8:921:13 | Append | 0 | const class:0 * | -| atl.cpp:921:8:921:13 | Append | 1 | int | -| atl.cpp:922:8:922:13 | Append | 0 | PCXSTR | -| atl.cpp:922:8:922:13 | Append | 0 | const class:0 * | -| atl.cpp:926:15:926:23 | CopyChars | 0 | XCHAR * | -| atl.cpp:926:15:926:23 | CopyChars | 0 | char * | -| atl.cpp:926:15:926:23 | CopyChars | 1 | const XCHAR * | -| atl.cpp:926:15:926:23 | CopyChars | 1 | const char * | -| atl.cpp:926:15:926:23 | CopyChars | 2 | int | -| atl.cpp:927:15:927:23 | CopyChars | 0 | XCHAR * | -| atl.cpp:927:15:927:23 | CopyChars | 0 | char * | -| atl.cpp:927:15:927:23 | CopyChars | 1 | size_t | -| atl.cpp:927:15:927:23 | CopyChars | 2 | const XCHAR * | -| atl.cpp:927:15:927:23 | CopyChars | 2 | const char * | -| atl.cpp:927:15:927:23 | CopyChars | 3 | int | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | 0 | XCHAR * | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | 0 | char * | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | 1 | const XCHAR * | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | 1 | const char * | -| atl.cpp:928:15:928:33 | CopyCharsOverlapped | 2 | int | -| atl.cpp:930:9:930:13 | GetAt | 0 | int | -| atl.cpp:931:9:931:17 | GetBuffer | 0 | int | -| atl.cpp:933:9:933:26 | GetBufferSetLength | 0 | int | -| atl.cpp:937:8:937:12 | SetAt | 0 | int | -| atl.cpp:937:8:937:12 | SetAt | 1 | XCHAR | -| atl.cpp:937:8:937:12 | SetAt | 1 | char | -| atl.cpp:938:8:938:16 | SetString | 0 | PCXSTR | -| atl.cpp:938:8:938:16 | SetString | 0 | const class:0 * | -| atl.cpp:938:8:938:16 | SetString | 1 | int | -| atl.cpp:939:8:939:16 | SetString | 0 | PCXSTR | -| atl.cpp:939:8:939:16 | SetString | 0 | const class:0 * | -| atl.cpp:941:9:941:18 | operator[] | 0 | int | -| atl.cpp:1035:3:1035:10 | CStringT | 0 | const VARIANT & | -| atl.cpp:1035:3:1035:10 | CStringT | 0 | const tagVARIANT & | -| atl.cpp:1036:3:1036:10 | CStringT | 0 | const VARIANT & | -| atl.cpp:1036:3:1036:10 | CStringT | 0 | const tagVARIANT & | -| atl.cpp:1036:3:1036:10 | CStringT | 1 | IAtlStringMgr * | -| atl.cpp:1037:3:1037:10 | CStringT | 0 | const CStringT & | -| atl.cpp:1041:3:1041:10 | CStringT | 0 | LPCSTR | -| atl.cpp:1041:3:1041:10 | CStringT | 0 | const char * | -| atl.cpp:1041:3:1041:10 | CStringT | 1 | IAtlStringMgr * | -| atl.cpp:1042:3:1042:10 | CStringT | 0 | LPCWSTR | -| atl.cpp:1042:3:1042:10 | CStringT | 0 | const wchar_t * | -| atl.cpp:1042:3:1042:10 | CStringT | 1 | IAtlStringMgr * | -| atl.cpp:1044:3:1044:10 | CStringT | 0 | char * | -| atl.cpp:1045:3:1045:10 | CStringT | 0 | unsigned char * | -| atl.cpp:1046:3:1046:10 | CStringT | 0 | wchar_t * | -| atl.cpp:1048:3:1048:10 | CStringT | 0 | char | -| atl.cpp:1048:3:1048:10 | CStringT | 1 | int | -| atl.cpp:1049:3:1049:10 | CStringT | 0 | wchar_t | -| atl.cpp:1049:3:1049:10 | CStringT | 1 | int | -| atl.cpp:1060:8:1060:19 | AppendFormat | 0 | PCXSTR | -| atl.cpp:1060:8:1060:19 | AppendFormat | 1 | ... | -| atl.cpp:1061:8:1061:19 | AppendFormat | 0 | UINT | -| atl.cpp:1061:8:1061:19 | AppendFormat | 0 | unsigned int | -| atl.cpp:1061:8:1061:19 | AppendFormat | 1 | ... | -| atl.cpp:1069:7:1069:12 | Insert | 0 | int | -| atl.cpp:1069:7:1069:12 | Insert | 1 | PCXSTR | -| atl.cpp:1070:7:1070:12 | Insert | 0 | int | -| atl.cpp:1070:7:1070:12 | Insert | 1 | XCHAR | -| atl.cpp:1070:7:1070:12 | Insert | 1 | class:0 | -| atl.cpp:1071:12:1071:15 | Left | 0 | int | -| atl.cpp:1074:8:1074:17 | LoadString | 0 | UINT | -| atl.cpp:1074:8:1074:17 | LoadString | 0 | unsigned int | -| atl.cpp:1078:12:1078:14 | Mid | 0 | int | -| atl.cpp:1078:12:1078:14 | Mid | 1 | int | -| atl.cpp:1080:7:1080:13 | Replace | 0 | PCXSTR | -| atl.cpp:1080:7:1080:13 | Replace | 1 | PCXSTR | -| atl.cpp:1081:7:1081:13 | Replace | 0 | XCHAR | -| atl.cpp:1081:7:1081:13 | Replace | 0 | class:0 | -| atl.cpp:1081:7:1081:13 | Replace | 1 | XCHAR | -| atl.cpp:1081:7:1081:13 | Replace | 1 | class:0 | -| atl.cpp:1082:12:1082:16 | Right | 0 | int | -| atl.cpp:1083:8:1083:19 | SetSysString | 0 | BSTR * | -| atl.cpp:1083:8:1083:19 | SetSysString | 0 | wchar_t ** | -| atl.cpp:1084:12:1084:24 | SpanExcluding | 0 | PCXSTR | -| atl.cpp:1085:12:1085:24 | SpanIncluding | 0 | PCXSTR | -| atl.cpp:1086:12:1086:19 | Tokenize | 0 | PCXSTR | -| atl.cpp:1086:12:1086:19 | Tokenize | 1 | int & | -| atl.cpp:1087:13:1087:16 | Trim | 0 | XCHAR | -| atl.cpp:1087:13:1087:16 | Trim | 0 | class:0 | -| atl.cpp:1088:13:1088:16 | Trim | 0 | PCXSTR | -| atl.cpp:1090:13:1090:20 | TrimLeft | 0 | XCHAR | -| atl.cpp:1090:13:1090:20 | TrimLeft | 0 | class:0 | -| atl.cpp:1091:13:1091:20 | TrimLeft | 0 | PCXSTR | -| atl.cpp:1093:13:1093:21 | TrimRight | 0 | XCHAR | -| atl.cpp:1093:13:1093:21 | TrimRight | 0 | class:0 | -| atl.cpp:1094:13:1094:21 | TrimRight | 0 | PCXSTR | -| atl.cpp:1214:8:1214:8 | operator= | 0 | CStringData && | -| atl.cpp:1214:8:1214:8 | operator= | 0 | const CStringData & | -| atl.cpp:1230:3:1230:10 | CStrBufT | 0 | StringType & | -| atl.cpp:1230:3:1230:10 | CStrBufT | 1 | int | -| atl.cpp:1230:3:1230:10 | CStrBufT | 2 | DWORD | -| atl.cpp:1230:3:1230:10 | CStrBufT | 2 | unsigned long | +| atl.cpp:52:18:52:18 | operator= | 0 | const tagSAFEARRAYBOUND & | +| atl.cpp:52:18:52:18 | operator= | 0 | tagSAFEARRAYBOUND && | +| atl.cpp:57:18:57:18 | operator= | 0 | const tagVARIANT & | +| atl.cpp:57:18:57:18 | operator= | 0 | tagVARIANT && | +| atl.cpp:61:18:61:18 | operator= | 0 | const tagSAFEARRAY & | +| atl.cpp:61:18:61:18 | operator= | 0 | tagSAFEARRAY && | +| atl.cpp:70:10:70:10 | _U_STRINGorID | 0 | _U_STRINGorID && | +| atl.cpp:70:10:70:10 | _U_STRINGorID | 0 | const _U_STRINGorID & | +| atl.cpp:70:10:70:10 | operator= | 0 | _U_STRINGorID && | +| atl.cpp:70:10:70:10 | operator= | 0 | const _U_STRINGorID & | +| atl.cpp:71:5:71:17 | _U_STRINGorID | 0 | UINT | +| atl.cpp:71:5:71:17 | _U_STRINGorID | 0 | unsigned int | +| atl.cpp:72:5:72:17 | _U_STRINGorID | 0 | LPCTSTR | +| atl.cpp:72:5:72:17 | _U_STRINGorID | 0 | const char * | +| atl.cpp:196:12:196:14 | Add | 0 | INARGTYPclass:0 | +| atl.cpp:198:12:198:17 | Append | 0 | const CAtlArray & | +| atl.cpp:199:10:199:13 | Copy | 0 | const CAtlArray & | +| atl.cpp:201:8:201:12 | GetAt | 0 | size_t | +| atl.cpp:205:10:205:22 | InsertArrayAt | 0 | size_t | +| atl.cpp:205:10:205:22 | InsertArrayAt | 1 | const CAtlArray * | +| atl.cpp:206:10:206:17 | InsertAt | 0 | size_t | +| atl.cpp:206:10:206:17 | InsertAt | 1 | INARGTYPclass:0 | +| atl.cpp:206:10:206:17 | InsertAt | 2 | size_t | +| atl.cpp:211:10:211:18 | SetAtGrow | 0 | size_t | +| atl.cpp:211:10:211:18 | SetAtGrow | 1 | INARGTYPclass:0 | +| atl.cpp:213:8:213:17 | operator[] | 0 | size_t | +| atl.cpp:259:5:259:12 | CAtlList | 0 | UINT | +| atl.cpp:259:5:259:12 | CAtlList | 0 | UINT | +| atl.cpp:259:5:259:12 | CAtlList | 0 | unsigned int | +| atl.cpp:259:5:259:12 | CAtlList | 0 | unsigned int | +| atl.cpp:262:14:262:20 | AddHead | 0 | INARGTYPclass:0 | +| atl.cpp:262:14:262:20 | AddHead | 0 | INARGTYPclass:0 | +| atl.cpp:263:10:263:20 | AddHeadList | 0 | const CAtlList * | +| atl.cpp:263:10:263:20 | AddHeadList | 0 | const CAtlList * | +| atl.cpp:265:14:265:20 | AddTail | 0 | INARGTYPclass:0 | +| atl.cpp:265:14:265:20 | AddTail | 0 | INARGTYPclass:0 | +| atl.cpp:266:10:266:20 | AddTailList | 0 | const CAtlList * | +| atl.cpp:266:10:266:20 | AddTailList | 0 | const CAtlList * | +| atl.cpp:267:14:267:17 | Find | 0 | INARGTYPclass:0 | +| atl.cpp:267:14:267:17 | Find | 0 | INARGTYPclass:0 | +| atl.cpp:267:14:267:17 | Find | 1 | POSITION | +| atl.cpp:267:14:267:17 | Find | 1 | POSITION | +| atl.cpp:267:14:267:17 | Find | 1 | __POSITION * | +| atl.cpp:267:14:267:17 | Find | 1 | __POSITION * | +| atl.cpp:268:14:268:22 | FindIndex | 0 | size_t | +| atl.cpp:268:14:268:22 | FindIndex | 0 | size_t | +| atl.cpp:269:8:269:12 | GetAt | 0 | POSITION | +| atl.cpp:269:8:269:12 | GetAt | 0 | POSITION | +| atl.cpp:269:8:269:12 | GetAt | 0 | __POSITION * | +| atl.cpp:269:8:269:12 | GetAt | 0 | __POSITION * | +| atl.cpp:282:14:282:24 | InsertAfter | 0 | POSITION | +| atl.cpp:282:14:282:24 | InsertAfter | 0 | POSITION | +| atl.cpp:282:14:282:24 | InsertAfter | 0 | __POSITION * | +| atl.cpp:282:14:282:24 | InsertAfter | 0 | __POSITION * | +| atl.cpp:282:14:282:24 | InsertAfter | 1 | INARGTYPclass:0 | +| atl.cpp:282:14:282:24 | InsertAfter | 1 | INARGTYPclass:0 | +| atl.cpp:283:14:283:25 | InsertBefore | 0 | POSITION | +| atl.cpp:283:14:283:25 | InsertBefore | 0 | POSITION | +| atl.cpp:283:14:283:25 | InsertBefore | 0 | __POSITION * | +| atl.cpp:283:14:283:25 | InsertBefore | 0 | __POSITION * | +| atl.cpp:283:14:283:25 | InsertBefore | 1 | INARGTYPclass:0 | +| atl.cpp:283:14:283:25 | InsertBefore | 1 | INARGTYPclass:0 | +| atl.cpp:293:10:293:14 | SetAt | 0 | POSITION | +| atl.cpp:293:10:293:14 | SetAt | 0 | POSITION | +| atl.cpp:293:10:293:14 | SetAt | 0 | __POSITION * | +| atl.cpp:293:10:293:14 | SetAt | 0 | __POSITION * | +| atl.cpp:293:10:293:14 | SetAt | 1 | INARGTYPclass:0 | +| atl.cpp:293:10:293:14 | SetAt | 1 | INARGTYPclass:0 | +| atl.cpp:403:10:403:10 | operator= | 0 | IUnknown && | +| atl.cpp:403:10:403:10 | operator= | 0 | const IUnknown & | +| atl.cpp:405:10:405:10 | operator= | 0 | ISequentialStream && | +| atl.cpp:405:10:405:10 | operator= | 0 | const ISequentialStream & | +| atl.cpp:407:10:407:10 | operator= | 0 | IStream && | +| atl.cpp:407:10:407:10 | operator= | 0 | const IStream & | +| atl.cpp:409:10:409:10 | operator= | 0 | const CComBSTR & | +| atl.cpp:411:5:411:12 | CComBSTR | 0 | const CComBSTR & | +| atl.cpp:412:5:412:12 | CComBSTR | 0 | int | +| atl.cpp:413:5:413:12 | CComBSTR | 0 | int | +| atl.cpp:413:5:413:12 | CComBSTR | 1 | LPCOLESTR | +| atl.cpp:413:5:413:12 | CComBSTR | 1 | const wchar_t * | +| atl.cpp:414:5:414:12 | CComBSTR | 0 | int | +| atl.cpp:414:5:414:12 | CComBSTR | 1 | LPCSTR | +| atl.cpp:414:5:414:12 | CComBSTR | 1 | const char * | +| atl.cpp:415:5:415:12 | CComBSTR | 0 | LPCOLESTR | +| atl.cpp:415:5:415:12 | CComBSTR | 0 | const wchar_t * | +| atl.cpp:416:5:416:12 | CComBSTR | 0 | LPCSTR | +| atl.cpp:416:5:416:12 | CComBSTR | 0 | const char * | +| atl.cpp:417:5:417:12 | CComBSTR | 0 | CComBSTR && | +| atl.cpp:420:13:420:18 | Append | 0 | const CComBSTR & | +| atl.cpp:421:13:421:18 | Append | 0 | wchar_t | +| atl.cpp:422:13:422:18 | Append | 0 | char | +| atl.cpp:423:13:423:18 | Append | 0 | LPCOLESTR | +| atl.cpp:423:13:423:18 | Append | 0 | const wchar_t * | +| atl.cpp:424:13:424:18 | Append | 0 | LPCSTR | +| atl.cpp:424:13:424:18 | Append | 0 | const char * | +| atl.cpp:425:13:425:18 | Append | 0 | LPCOLESTR | +| atl.cpp:425:13:425:18 | Append | 0 | const wchar_t * | +| atl.cpp:425:13:425:18 | Append | 1 | int | +| atl.cpp:426:13:426:22 | AppendBSTR | 0 | BSTR | +| atl.cpp:426:13:426:22 | AppendBSTR | 0 | wchar_t * | +| atl.cpp:427:13:427:23 | AppendBytes | 0 | const char * | +| atl.cpp:427:13:427:23 | AppendBytes | 1 | int | +| atl.cpp:428:13:428:23 | ArrayToBSTR | 0 | const SAFEARRAY * | +| atl.cpp:428:13:428:23 | ArrayToBSTR | 0 | const tagSAFEARRAY * | +| atl.cpp:429:13:429:22 | AssignBSTR | 0 | const BSTR | +| atl.cpp:429:13:429:22 | AssignBSTR | 0 | const wchar_t * | +| atl.cpp:430:10:430:15 | Attach | 0 | BSTR | +| atl.cpp:430:10:430:15 | Attach | 0 | wchar_t * | +| atl.cpp:431:13:431:23 | BSTRToArray | 0 | LPSAFEARRAY * | +| atl.cpp:431:13:431:23 | BSTRToArray | 0 | tagSAFEARRAY ** | +| atl.cpp:434:13:434:18 | CopyTo | 0 | BSTR * | +| atl.cpp:434:13:434:18 | CopyTo | 0 | wchar_t ** | +| atl.cpp:436:13:436:18 | CopyTo | 0 | VARIANT * | +| atl.cpp:436:13:436:18 | CopyTo | 0 | tagVARIANT * | +| atl.cpp:440:10:440:19 | LoadString | 0 | HINSTANCE | +| atl.cpp:440:10:440:19 | LoadString | 0 | void * | +| atl.cpp:440:10:440:19 | LoadString | 1 | UINT | +| atl.cpp:440:10:440:19 | LoadString | 1 | unsigned int | +| atl.cpp:441:10:441:19 | LoadString | 0 | UINT | +| atl.cpp:441:10:441:19 | LoadString | 0 | unsigned int | +| atl.cpp:442:13:442:26 | ReadFromStream | 0 | IStream * | +| atl.cpp:444:13:444:25 | WriteToStream | 0 | IStream * | +| atl.cpp:449:15:449:24 | operator+= | 0 | const CComBSTR & | +| atl.cpp:450:15:450:24 | operator+= | 0 | LPCOLESTR | +| atl.cpp:450:15:450:24 | operator+= | 0 | const wchar_t * | +| atl.cpp:540:5:540:17 | CComSafeArray | 0 | const SAFEARRAY * | +| atl.cpp:540:5:540:17 | CComSafeArray | 0 | const tagSAFEARRAY * | +| atl.cpp:544:13:544:15 | Add | 0 | const SAFEARRAY * | +| atl.cpp:544:13:544:15 | Add | 0 | const tagSAFEARRAY * | +| atl.cpp:546:13:546:15 | Add | 0 | const class:0 & | +| atl.cpp:546:13:546:15 | Add | 1 | BOOL | +| atl.cpp:546:13:546:15 | Add | 1 | bool | +| atl.cpp:554:8:554:12 | GetAt | 0 | LONG | +| atl.cpp:554:8:554:12 | GetAt | 0 | long | +| atl.cpp:565:13:565:17 | SetAt | 0 | LONG | +| atl.cpp:565:13:565:17 | SetAt | 0 | long | +| atl.cpp:565:13:565:17 | SetAt | 1 | const class:0 & | +| atl.cpp:565:13:565:17 | SetAt | 2 | BOOL | +| atl.cpp:565:13:565:17 | SetAt | 2 | bool | +| atl.cpp:567:8:567:17 | operator[] | 0 | long | +| atl.cpp:568:8:568:17 | operator[] | 0 | int | +| atl.cpp:612:5:612:10 | CPathT | 0 | PCXSTR | +| atl.cpp:612:5:612:10 | CPathT | 0 | class:0 | +| atl.cpp:613:5:613:10 | CPathT | 0 | const CPathT & | +| atl.cpp:617:10:617:21 | AddExtension | 0 | PCXSTR | +| atl.cpp:617:10:617:21 | AddExtension | 0 | class:0 | +| atl.cpp:618:10:618:15 | Append | 0 | PCXSTR | +| atl.cpp:618:10:618:15 | Append | 0 | class:0 | +| atl.cpp:621:10:621:16 | Combine | 0 | PCXSTR | +| atl.cpp:621:10:621:16 | Combine | 0 | class:0 | +| atl.cpp:621:10:621:16 | Combine | 1 | PCXSTR | +| atl.cpp:621:10:621:16 | Combine | 1 | class:0 | +| atl.cpp:622:24:622:35 | CommonPrefix | 0 | PCXSTR | +| atl.cpp:622:24:622:35 | CommonPrefix | 0 | class:0 | +| atl.cpp:659:25:659:34 | operator+= | 0 | PCXSTR | +| atl.cpp:659:25:659:34 | operator+= | 0 | class:0 | +| atl.cpp:719:10:719:12 | Add | 0 | const class:0 & | +| atl.cpp:720:9:720:12 | Find | 0 | const class:0 & | +| atl.cpp:731:8:731:17 | operator[] | 0 | int | +| atl.cpp:732:23:732:31 | operator= | 0 | const CSimpleArray & | +| atl.cpp:765:10:765:12 | Add | 0 | const class:0 & | +| atl.cpp:765:10:765:12 | Add | 1 | const class:1 & | +| atl.cpp:766:9:766:15 | FindKey | 0 | const class:0 & | +| atl.cpp:767:9:767:15 | FindVal | 0 | const class:1 & | +| atl.cpp:770:11:770:20 | GetValueAt | 0 | int | +| atl.cpp:771:10:771:15 | Lookup | 0 | const class:0 & | +| atl.cpp:775:10:775:22 | ReverseLookup | 0 | const class:1 & | +| atl.cpp:776:10:776:14 | SetAt | 0 | const class:0 & | +| atl.cpp:776:10:776:14 | SetAt | 1 | const class:1 & | +| atl.cpp:777:10:777:19 | SetAtIndex | 0 | int | +| atl.cpp:777:10:777:19 | SetAtIndex | 1 | const class:0 & | +| atl.cpp:777:10:777:19 | SetAtIndex | 2 | const class:1 & | +| atl.cpp:816:11:816:19 | operator= | 0 | const CUrl & | +| atl.cpp:818:5:818:8 | CUrl | 0 | const CUrl & | +| atl.cpp:821:17:821:28 | Canonicalize | 0 | DWORD | +| atl.cpp:821:17:821:28 | Canonicalize | 0 | unsigned long | +| atl.cpp:824:10:824:17 | CrackUrl | 0 | LPCTSTR | +| atl.cpp:824:10:824:17 | CrackUrl | 0 | const char * | +| atl.cpp:824:10:824:17 | CrackUrl | 1 | DWORD | +| atl.cpp:824:10:824:17 | CrackUrl | 1 | unsigned long | +| atl.cpp:825:17:825:25 | CreateUrl | 0 | LPTSTR | +| atl.cpp:825:17:825:25 | CreateUrl | 0 | char * | +| atl.cpp:825:17:825:25 | CreateUrl | 1 | DWORD * | +| atl.cpp:825:17:825:25 | CreateUrl | 1 | unsigned long * | +| atl.cpp:825:17:825:25 | CreateUrl | 2 | DWORD | +| atl.cpp:825:17:825:25 | CreateUrl | 2 | unsigned long | +| atl.cpp:842:17:842:28 | SetExtraInfo | 0 | LPCTSTR | +| atl.cpp:842:17:842:28 | SetExtraInfo | 0 | const char * | +| atl.cpp:843:17:843:27 | SetHostName | 0 | LPCTSTR | +| atl.cpp:843:17:843:27 | SetHostName | 0 | const char * | +| atl.cpp:844:17:844:27 | SetPassword | 0 | LPCTSTR | +| atl.cpp:844:17:844:27 | SetPassword | 0 | const char * | +| atl.cpp:845:17:845:29 | SetPortNumber | 0 | ATL_URL_PORT | +| atl.cpp:845:17:845:29 | SetPortNumber | 0 | unsigned short | +| atl.cpp:846:17:846:25 | SetScheme | 0 | ATL_URL_SCHEME | +| atl.cpp:847:17:847:29 | SetSchemeName | 0 | LPCTSTR | +| atl.cpp:847:17:847:29 | SetSchemeName | 0 | const char * | +| atl.cpp:848:17:848:26 | SetUrlPath | 0 | LPCTSTR | +| atl.cpp:848:17:848:26 | SetUrlPath | 0 | const char * | +| atl.cpp:849:17:849:27 | SetUserName | 0 | LPCTSTR | +| atl.cpp:849:17:849:27 | SetUserName | 0 | const char * | +| atl.cpp:904:10:904:10 | operator= | 0 | IAtlStringMgr && | +| atl.cpp:904:10:904:10 | operator= | 0 | const IAtlStringMgr & | +| atl.cpp:915:5:915:18 | CSimpleStringT | 0 | const XCHAR * | +| atl.cpp:915:5:915:18 | CSimpleStringT | 0 | const char * | +| atl.cpp:915:5:915:18 | CSimpleStringT | 1 | int | +| atl.cpp:915:5:915:18 | CSimpleStringT | 2 | IAtlStringMgr * | +| atl.cpp:916:5:916:18 | CSimpleStringT | 0 | PCXSTR | +| atl.cpp:916:5:916:18 | CSimpleStringT | 0 | const class:0 * | +| atl.cpp:916:5:916:18 | CSimpleStringT | 1 | IAtlStringMgr * | +| atl.cpp:917:5:917:18 | CSimpleStringT | 0 | const CSimpleStringT & | +| atl.cpp:921:10:921:15 | Append | 0 | const CSimpleStringT & | +| atl.cpp:922:10:922:15 | Append | 0 | PCXSTR | +| atl.cpp:922:10:922:15 | Append | 0 | const class:0 * | +| atl.cpp:922:10:922:15 | Append | 1 | int | +| atl.cpp:923:10:923:15 | Append | 0 | PCXSTR | +| atl.cpp:923:10:923:15 | Append | 0 | const class:0 * | +| atl.cpp:927:17:927:25 | CopyChars | 0 | XCHAR * | +| atl.cpp:927:17:927:25 | CopyChars | 0 | char * | +| atl.cpp:927:17:927:25 | CopyChars | 1 | const XCHAR * | +| atl.cpp:927:17:927:25 | CopyChars | 1 | const char * | +| atl.cpp:927:17:927:25 | CopyChars | 2 | int | +| atl.cpp:928:17:928:25 | CopyChars | 0 | XCHAR * | +| atl.cpp:928:17:928:25 | CopyChars | 0 | char * | +| atl.cpp:928:17:928:25 | CopyChars | 1 | size_t | +| atl.cpp:928:17:928:25 | CopyChars | 2 | const XCHAR * | +| atl.cpp:928:17:928:25 | CopyChars | 2 | const char * | +| atl.cpp:928:17:928:25 | CopyChars | 3 | int | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | 0 | XCHAR * | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | 0 | char * | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | 1 | const XCHAR * | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | 1 | const char * | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | 2 | int | +| atl.cpp:931:11:931:15 | GetAt | 0 | int | +| atl.cpp:932:11:932:19 | GetBuffer | 0 | int | +| atl.cpp:934:11:934:28 | GetBufferSetLength | 0 | int | +| atl.cpp:938:10:938:14 | SetAt | 0 | int | +| atl.cpp:938:10:938:14 | SetAt | 1 | XCHAR | +| atl.cpp:938:10:938:14 | SetAt | 1 | char | +| atl.cpp:939:10:939:18 | SetString | 0 | PCXSTR | +| atl.cpp:939:10:939:18 | SetString | 0 | const class:0 * | +| atl.cpp:939:10:939:18 | SetString | 1 | int | +| atl.cpp:940:10:940:18 | SetString | 0 | PCXSTR | +| atl.cpp:940:10:940:18 | SetString | 0 | const class:0 * | +| atl.cpp:942:11:942:20 | operator[] | 0 | int | +| atl.cpp:1036:5:1036:12 | CStringT | 0 | const VARIANT & | +| atl.cpp:1036:5:1036:12 | CStringT | 0 | const tagVARIANT & | +| atl.cpp:1037:5:1037:12 | CStringT | 0 | const VARIANT & | +| atl.cpp:1037:5:1037:12 | CStringT | 0 | const tagVARIANT & | +| atl.cpp:1037:5:1037:12 | CStringT | 1 | IAtlStringMgr * | +| atl.cpp:1038:5:1038:12 | CStringT | 0 | const CStringT & | +| atl.cpp:1042:5:1042:12 | CStringT | 0 | LPCSTR | +| atl.cpp:1042:5:1042:12 | CStringT | 0 | const char * | +| atl.cpp:1042:5:1042:12 | CStringT | 1 | IAtlStringMgr * | +| atl.cpp:1043:5:1043:12 | CStringT | 0 | LPCWSTR | +| atl.cpp:1043:5:1043:12 | CStringT | 0 | const wchar_t * | +| atl.cpp:1043:5:1043:12 | CStringT | 1 | IAtlStringMgr * | +| atl.cpp:1045:5:1045:12 | CStringT | 0 | char * | +| atl.cpp:1046:5:1046:12 | CStringT | 0 | unsigned char * | +| atl.cpp:1047:5:1047:12 | CStringT | 0 | wchar_t * | +| atl.cpp:1049:5:1049:12 | CStringT | 0 | char | +| atl.cpp:1049:5:1049:12 | CStringT | 1 | int | +| atl.cpp:1050:5:1050:12 | CStringT | 0 | wchar_t | +| atl.cpp:1050:5:1050:12 | CStringT | 1 | int | +| atl.cpp:1061:10:1061:21 | AppendFormat | 0 | PCXSTR | +| atl.cpp:1061:10:1061:21 | AppendFormat | 1 | ... | +| atl.cpp:1062:10:1062:21 | AppendFormat | 0 | UINT | +| atl.cpp:1062:10:1062:21 | AppendFormat | 0 | unsigned int | +| atl.cpp:1062:10:1062:21 | AppendFormat | 1 | ... | +| atl.cpp:1070:9:1070:14 | Insert | 0 | int | +| atl.cpp:1070:9:1070:14 | Insert | 1 | PCXSTR | +| atl.cpp:1071:9:1071:14 | Insert | 0 | int | +| atl.cpp:1071:9:1071:14 | Insert | 1 | XCHAR | +| atl.cpp:1071:9:1071:14 | Insert | 1 | class:0 | +| atl.cpp:1072:14:1072:17 | Left | 0 | int | +| atl.cpp:1075:10:1075:19 | LoadString | 0 | UINT | +| atl.cpp:1075:10:1075:19 | LoadString | 0 | unsigned int | +| atl.cpp:1079:14:1079:16 | Mid | 0 | int | +| atl.cpp:1079:14:1079:16 | Mid | 1 | int | +| atl.cpp:1081:9:1081:15 | Replace | 0 | PCXSTR | +| atl.cpp:1081:9:1081:15 | Replace | 1 | PCXSTR | +| atl.cpp:1082:9:1082:15 | Replace | 0 | XCHAR | +| atl.cpp:1082:9:1082:15 | Replace | 0 | class:0 | +| atl.cpp:1082:9:1082:15 | Replace | 1 | XCHAR | +| atl.cpp:1082:9:1082:15 | Replace | 1 | class:0 | +| atl.cpp:1083:14:1083:18 | Right | 0 | int | +| atl.cpp:1084:10:1084:21 | SetSysString | 0 | BSTR * | +| atl.cpp:1084:10:1084:21 | SetSysString | 0 | wchar_t ** | +| atl.cpp:1085:14:1085:26 | SpanExcluding | 0 | PCXSTR | +| atl.cpp:1086:14:1086:26 | SpanIncluding | 0 | PCXSTR | +| atl.cpp:1087:14:1087:21 | Tokenize | 0 | PCXSTR | +| atl.cpp:1087:14:1087:21 | Tokenize | 1 | int & | +| atl.cpp:1088:15:1088:18 | Trim | 0 | XCHAR | +| atl.cpp:1088:15:1088:18 | Trim | 0 | class:0 | +| atl.cpp:1089:15:1089:18 | Trim | 0 | PCXSTR | +| atl.cpp:1091:15:1091:22 | TrimLeft | 0 | XCHAR | +| atl.cpp:1091:15:1091:22 | TrimLeft | 0 | class:0 | +| atl.cpp:1092:15:1092:22 | TrimLeft | 0 | PCXSTR | +| atl.cpp:1094:15:1094:23 | TrimRight | 0 | XCHAR | +| atl.cpp:1094:15:1094:23 | TrimRight | 0 | class:0 | +| atl.cpp:1095:15:1095:23 | TrimRight | 0 | PCXSTR | +| atl.cpp:1215:10:1215:10 | operator= | 0 | CStringData && | +| atl.cpp:1215:10:1215:10 | operator= | 0 | const CStringData & | +| atl.cpp:1231:5:1231:12 | CStrBufT | 0 | StringType & | +| atl.cpp:1231:5:1231:12 | CStrBufT | 1 | int | +| atl.cpp:1231:5:1231:12 | CStrBufT | 2 | DWORD | +| atl.cpp:1231:5:1231:12 | CStrBufT | 2 | unsigned long | | bsd.cpp:6:8:6:8 | operator= | 0 | const sockaddr & | | bsd.cpp:6:8:6:8 | operator= | 0 | sockaddr && | | bsd.cpp:12:5:12:10 | accept | 0 | int | From b7d1c56372f3a0402431a5a56b1c8c71835b78ba Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 14 Mar 2025 18:53:09 +0000 Subject: [PATCH 3/4] C++: Add change note. --- cpp/ql/src/change-notes/2025-03-14-mad-atl-fix.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/src/change-notes/2025-03-14-mad-atl-fix.md diff --git a/cpp/ql/src/change-notes/2025-03-14-mad-atl-fix.md b/cpp/ql/src/change-notes/2025-03-14-mad-atl-fix.md new file mode 100644 index 00000000000..7e7c5f7e279 --- /dev/null +++ b/cpp/ql/src/change-notes/2025-03-14-mad-atl-fix.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Fixed a bug in the models for Microsoft's Active Template Library (ATL). From a035c9b4d1d438028f5041f0c6d1bfc228946f19 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 14 Mar 2025 20:04:45 +0000 Subject: [PATCH 4/4] C++: Also update source-sink tests. --- .../dataflow/source-sink-tests/atl.cpp | 660 +++++++++--------- 1 file changed, 332 insertions(+), 328 deletions(-) diff --git a/cpp/ql/test/library-tests/dataflow/source-sink-tests/atl.cpp b/cpp/ql/test/library-tests/dataflow/source-sink-tests/atl.cpp index 7df5e3dc1a0..24340195517 100644 --- a/cpp/ql/test/library-tests/dataflow/source-sink-tests/atl.cpp +++ b/cpp/ql/test/library-tests/dataflow/source-sink-tests/atl.cpp @@ -13,377 +13,381 @@ typedef long long LONGLONG; typedef unsigned long* ULONG_PTR; typedef char *LPTSTR; typedef DWORD* LPDWORD; -typedef ULONG REGSAM; -typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION; -typedef PVOID PSECURITY_DESCRIPTOR; -typedef struct _GUID { - unsigned long Data1; - unsigned short Data2; - unsigned short Data3; - unsigned char Data4[8]; -} GUID; -typedef GUID* REFGUID; - -typedef struct _SECURITY_ATTRIBUTES { - DWORD nLength; - LPVOID lpSecurityDescriptor; - BOOL bInheritHandle; -} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; - -typedef struct _FILETIME { - DWORD dwLowDateTime; - DWORD dwHighDateTime; -} FILETIME, *PFILETIME, *LPFILETIME; using size_t = decltype(sizeof(int)); using SIZE_T = size_t; -typedef struct _OVERLAPPED { - ULONG_PTR Internal; - ULONG_PTR InternalHigh; - union { - struct { - DWORD Offset; - DWORD OffsetHigh; - } DUMMYSTRUCTNAME; - PVOID Pointer; - } DUMMYUNIONNAME; - HANDLE hEvent; -} OVERLAPPED, *LPOVERLAPPED; +namespace ATL { -using LPOVERLAPPED_COMPLETION_ROUTINE = void(DWORD, DWORD, LPOVERLAPPED); + typedef ULONG REGSAM; + typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION; + typedef PVOID PSECURITY_DESCRIPTOR; + typedef struct _GUID { + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; + } GUID; + typedef GUID* REFGUID; -using HKEY = void*; + typedef struct _SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; + } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; -class CAtlTransactionManager; + typedef struct _FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; + } FILETIME, *PFILETIME, *LPFILETIME; -class CHandle { - CHandle() throw(); - CHandle(CHandle& h) throw(); - explicit CHandle(HANDLE h) throw(); -}; + typedef struct _OVERLAPPED { + ULONG_PTR Internal; + ULONG_PTR InternalHigh; + union { + struct { + DWORD Offset; + DWORD OffsetHigh; + } DUMMYSTRUCTNAME; + PVOID Pointer; + } DUMMYUNIONNAME; + HANDLE hEvent; + } OVERLAPPED, *LPOVERLAPPED; -struct CAtlFile : public CHandle { - CAtlFile() throw(); - CAtlFile(CAtlTransactionManager* pTM) throw(); - CAtlFile(CAtlFile& file) throw(); - explicit CAtlFile(HANDLE hFile) throw(); + using LPOVERLAPPED_COMPLETION_ROUTINE = void(DWORD, DWORD, LPOVERLAPPED); - HRESULT Create( - LPCTSTR szFilename, - DWORD dwDesiredAccess, - DWORD dwShareMode, - DWORD dwCreationDisposition, - DWORD dwFlagsAndAttributes, - LPSECURITY_ATTRIBUTES lpsa, - HANDLE hTemplateFile) throw(); + using HKEY = void*; + class CAtlTransactionManager; + + class CHandle { + CHandle() throw(); + CHandle(CHandle& h) throw(); + explicit CHandle(HANDLE h) throw(); + }; + + struct CAtlFile : public CHandle { + CAtlFile() throw(); + CAtlFile(CAtlTransactionManager* pTM) throw(); + CAtlFile(CAtlFile& file) throw(); + explicit CAtlFile(HANDLE hFile) throw(); + + HRESULT Create( + LPCTSTR szFilename, + DWORD dwDesiredAccess, + DWORD dwShareMode, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + LPSECURITY_ATTRIBUTES lpsa, + HANDLE hTemplateFile) throw(); + + HRESULT Flush() throw(); + HRESULT GetOverlappedResult( + LPOVERLAPPED pOverlapped, + DWORD& dwBytesTransferred, + BOOL bWait + ) throw(); + + HRESULT GetPosition(ULONGLONG& nPos) const throw(); + HRESULT GetSize(ULONGLONG& nLen) const throw(); + HRESULT LockRange(ULONGLONG nPos, ULONGLONG nCount) throw(); + + HRESULT Read( + LPVOID pBuffer, + DWORD nBufSize) throw(); + + HRESULT Read( + LPVOID pBuffer, + DWORD nBufSize, + DWORD& nBytesRead) throw(); + HRESULT Read( + LPVOID pBuffer, + DWORD nBufSize, + LPOVERLAPPED pOverlapped) throw(); + HRESULT Read( + LPVOID pBuffer, + DWORD nBufSize, + LPOVERLAPPED pOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE pfnCompletionRoutine) throw(); + + HRESULT Seek( + LONGLONG nOffset, + DWORD dwFrom) throw(); + + HRESULT SetSize(ULONGLONG nNewLen) throw(); + HRESULT UnlockRange(ULONGLONG nPos, ULONGLONG nCount) throw(); + HRESULT Write( + LPCVOID pBuffer, + DWORD nBufSize, + LPOVERLAPPED pOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE pfnCompletionRoutine) throw(); + + HRESULT Write( + LPCVOID pBuffer, + DWORD nBufSize, + DWORD* pnBytesWritten) throw(); + + HRESULT Write( + LPCVOID pBuffer, + DWORD nBufSize, + LPOVERLAPPED pOverlapped) throw(); + }; + + void test_CAtlFile() { + CAtlFile catFile; + char buffer[1024]; + catFile.Read(buffer, 1024); // $ local_source + } + + struct CAtlFileMappingBase { + CAtlFileMappingBase(CAtlFileMappingBase& orig); + CAtlFileMappingBase() throw(); + ~CAtlFileMappingBase() throw(); + + HRESULT CopyFrom(CAtlFileMappingBase& orig) throw(); + void* GetData() const throw(); + HANDLE GetHandle() throw (); + SIZE_T GetMappingSize() throw(); + + HRESULT MapFile( + HANDLE hFile, + SIZE_T nMappingSize, + ULONGLONG nOffset, + DWORD dwMappingProtection, + DWORD dwViewDesiredAccess) throw(); + + HRESULT MapSharedMem( + SIZE_T nMappingSize, + LPCTSTR szName, + BOOL* pbAlreadyExisted, + LPSECURITY_ATTRIBUTES lpsa, + DWORD dwMappingProtection, + DWORD dwViewDesiredAccess) throw(); + + HRESULT OpenMapping( + LPCTSTR szName, + SIZE_T nMappingSize, + ULONGLONG nOffset, + DWORD dwViewDesiredAccess) throw(); + + HRESULT Unmap() throw(); + }; + + template + struct CAtlFileMapping : public CAtlFileMappingBase { + operator T*() const throw(); + }; + + void test_CAtlFileMapping(CAtlFileMapping mapping) { + char* data = static_cast(mapping); // $ local_source + void* data2 = mapping.GetData(); // $ local_source + } + + struct CAtlTemporaryFile { + CAtlTemporaryFile() throw(); + ~CAtlTemporaryFile() throw(); + HRESULT Close(LPCTSTR szNewName) throw(); + HRESULT Create(LPCTSTR pszDir, DWORD dwDesiredAccess) throw(); HRESULT Flush() throw(); - HRESULT GetOverlappedResult( - LPOVERLAPPED pOverlapped, - DWORD& dwBytesTransferred, - BOOL bWait - ) throw(); - HRESULT GetPosition(ULONGLONG& nPos) const throw(); HRESULT GetSize(ULONGLONG& nLen) const throw(); + HRESULT HandsOff() throw(); + HRESULT HandsOn() throw(); HRESULT LockRange(ULONGLONG nPos, ULONGLONG nCount) throw(); - + HRESULT Read( - LPVOID pBuffer, - DWORD nBufSize) throw(); + LPVOID pBuffer, + DWORD nBufSize, + DWORD& nBytesRead) throw(); + HRESULT Seek(LONGLONG nOffset, DWORD dwFrom) throw(); + + HRESULT SetSize(ULONGLONG nNewLen) throw(); + LPCTSTR TempFileName() throw(); + HRESULT UnlockRange(ULONGLONG nPos, ULONGLONG nCount) throw(); + + HRESULT Write( + LPCVOID pBuffer, + DWORD nBufSize, + DWORD* pnBytesWritten) throw(); + operator HANDLE() throw(); + }; - HRESULT Read( - LPVOID pBuffer, - DWORD nBufSize, - DWORD& nBytesRead) throw(); - HRESULT Read( - LPVOID pBuffer, - DWORD nBufSize, - LPOVERLAPPED pOverlapped) throw(); - HRESULT Read( - LPVOID pBuffer, - DWORD nBufSize, - LPOVERLAPPED pOverlapped, - LPOVERLAPPED_COMPLETION_ROUTINE pfnCompletionRoutine) throw(); + void test_CAtlTemporaryFile() { + CAtlTemporaryFile file; + char buffer[1024]; + DWORD bytesRead; + file.Read(buffer, 1024, bytesRead); // $ local_source + } - HRESULT Seek( - LONGLONG nOffset, - DWORD dwFrom) throw(); + struct CRegKey { + CRegKey() throw(); + CRegKey(CRegKey& key) throw(); + explicit CRegKey(HKEY hKey) throw(); + CRegKey(CAtlTransactionManager* pTM) throw(); - HRESULT SetSize(ULONGLONG nNewLen) throw(); - HRESULT UnlockRange(ULONGLONG nPos, ULONGLONG nCount) throw(); - HRESULT Write( - LPCVOID pBuffer, - DWORD nBufSize, - LPOVERLAPPED pOverlapped, - LPOVERLAPPED_COMPLETION_ROUTINE pfnCompletionRoutine) throw(); + ~CRegKey() throw(); + void Attach(HKEY hKey) throw(); + LONG Close() throw(); - HRESULT Write( - LPCVOID pBuffer, - DWORD nBufSize, - DWORD* pnBytesWritten) throw(); + LONG Create( + HKEY hKeyParent, + LPCTSTR lpszKeyName, + LPTSTR lpszClass, + DWORD dwOptions, + REGSAM samDesired, + LPSECURITY_ATTRIBUTES lpSecAttr, + LPDWORD lpdwDisposition) throw(); - HRESULT Write( - LPCVOID pBuffer, - DWORD nBufSize, - LPOVERLAPPED pOverlapped) throw(); -}; + LONG DeleteSubKey(LPCTSTR lpszSubKey) throw(); + LONG DeleteValue(LPCTSTR lpszValue) throw(); + HKEY Detach() throw(); + + LONG EnumKey( + DWORD iIndex, + LPTSTR pszName, + LPDWORD pnNameLength, + FILETIME* pftLastWriteTime) throw(); + + LONG Flush() throw(); -void test_CAtlFile() { - CAtlFile catFile; - char buffer[1024]; - catFile.Read(buffer, 1024); // $ local_source -} + LONG GetKeySecurity( + SECURITY_INFORMATION si, + PSECURITY_DESCRIPTOR psd, + LPDWORD pnBytes) throw(); + + LONG NotifyChangeKeyValue( + BOOL bWatchSubtree, + DWORD dwNotifyFilter, + HANDLE hEvent, + BOOL bAsync) throw(); -struct CAtlFileMappingBase { - CAtlFileMappingBase(CAtlFileMappingBase& orig); - CAtlFileMappingBase() throw(); - ~CAtlFileMappingBase() throw(); + LONG Open( + HKEY hKeyParent, + LPCTSTR lpszKeyName, + REGSAM samDesired) throw(); - HRESULT CopyFrom(CAtlFileMappingBase& orig) throw(); - void* GetData() const throw(); - HANDLE GetHandle() throw (); - SIZE_T GetMappingSize() throw(); - - HRESULT MapFile( - HANDLE hFile, - SIZE_T nMappingSize, - ULONGLONG nOffset, - DWORD dwMappingProtection, - DWORD dwViewDesiredAccess) throw(); - - HRESULT MapSharedMem( - SIZE_T nMappingSize, - LPCTSTR szName, - BOOL* pbAlreadyExisted, - LPSECURITY_ATTRIBUTES lpsa, - DWORD dwMappingProtection, - DWORD dwViewDesiredAccess) throw(); - - HRESULT OpenMapping( - LPCTSTR szName, - SIZE_T nMappingSize, - ULONGLONG nOffset, - DWORD dwViewDesiredAccess) throw(); - - HRESULT Unmap() throw(); -}; - -template -struct CAtlFileMapping : public CAtlFileMappingBase { - operator T*() const throw(); -}; - -void test_CAtlFileMapping(CAtlFileMapping mapping) { - char* data = static_cast(mapping); // $ local_source - void* data2 = mapping.GetData(); // $ local_source -} - -struct CAtlTemporaryFile { - CAtlTemporaryFile() throw(); - ~CAtlTemporaryFile() throw(); - HRESULT Close(LPCTSTR szNewName) throw(); - HRESULT Create(LPCTSTR pszDir, DWORD dwDesiredAccess) throw(); - HRESULT Flush() throw(); - HRESULT GetPosition(ULONGLONG& nPos) const throw(); - HRESULT GetSize(ULONGLONG& nLen) const throw(); - HRESULT HandsOff() throw(); - HRESULT HandsOn() throw(); - HRESULT LockRange(ULONGLONG nPos, ULONGLONG nCount) throw(); - - HRESULT Read( - LPVOID pBuffer, - DWORD nBufSize, - DWORD& nBytesRead) throw(); - HRESULT Seek(LONGLONG nOffset, DWORD dwFrom) throw(); - - HRESULT SetSize(ULONGLONG nNewLen) throw(); - LPCTSTR TempFileName() throw(); - HRESULT UnlockRange(ULONGLONG nPos, ULONGLONG nCount) throw(); - - HRESULT Write( - LPCVOID pBuffer, - DWORD nBufSize, - DWORD* pnBytesWritten) throw(); - operator HANDLE() throw(); -}; - -void test_CAtlTemporaryFile() { - CAtlTemporaryFile file; - char buffer[1024]; - DWORD bytesRead; - file.Read(buffer, 1024, bytesRead); // $ local_source -} - -struct CRegKey { - CRegKey() throw(); - CRegKey(CRegKey& key) throw(); - explicit CRegKey(HKEY hKey) throw(); - CRegKey(CAtlTransactionManager* pTM) throw(); - - ~CRegKey() throw(); - void Attach(HKEY hKey) throw(); - LONG Close() throw(); - - LONG Create( - HKEY hKeyParent, - LPCTSTR lpszKeyName, - LPTSTR lpszClass, - DWORD dwOptions, - REGSAM samDesired, - LPSECURITY_ATTRIBUTES lpSecAttr, - LPDWORD lpdwDisposition) throw(); - - LONG DeleteSubKey(LPCTSTR lpszSubKey) throw(); - LONG DeleteValue(LPCTSTR lpszValue) throw(); - HKEY Detach() throw(); - - LONG EnumKey( - DWORD iIndex, - LPTSTR pszName, - LPDWORD pnNameLength, - FILETIME* pftLastWriteTime) throw(); - - LONG Flush() throw(); - - LONG GetKeySecurity( - SECURITY_INFORMATION si, - PSECURITY_DESCRIPTOR psd, - LPDWORD pnBytes) throw(); - - LONG NotifyChangeKeyValue( - BOOL bWatchSubtree, - DWORD dwNotifyFilter, - HANDLE hEvent, - BOOL bAsync) throw(); - - LONG Open( - HKEY hKeyParent, - LPCTSTR lpszKeyName, - REGSAM samDesired) throw(); - - LONG QueryBinaryValue( - LPCTSTR pszValueName, - void* pValue, - ULONG* pnBytes) throw(); - - LONG QueryDWORDValue( - LPCTSTR pszValueName, - DWORD& dwValue) throw(); - - LONG QueryGUIDValue( - LPCTSTR pszValueName, - GUID& guidValue) throw(); - - LONG QueryMultiStringValue( - LPCTSTR pszValueName, - LPTSTR pszValue, - ULONG* pnChars) throw(); - - LONG QueryQWORDValue( - LPCTSTR pszValueName, - ULONGLONG& qwValue) throw(); - - LONG QueryStringValue( - LPCTSTR pszValueName, - LPTSTR pszValue, - ULONG* pnChars) throw(); - - LONG QueryValue( + LONG QueryBinaryValue( LPCTSTR pszValueName, - DWORD* pdwType, - void* pData, + void* pValue, ULONG* pnBytes) throw(); - LONG QueryValue( - DWORD& dwValue, - LPCTSTR lpszValueName); + LONG QueryDWORDValue( + LPCTSTR pszValueName, + DWORD& dwValue) throw(); - LONG QueryValue( - LPTSTR szValue, - LPCTSTR lpszValueName, - DWORD* pdwCount); + LONG QueryGUIDValue( + LPCTSTR pszValueName, + GUID& guidValue) throw(); - LONG RecurseDeleteKey(LPCTSTR lpszKey) throw(); + LONG QueryMultiStringValue( + LPCTSTR pszValueName, + LPTSTR pszValue, + ULONG* pnChars) throw(); - LONG SetBinaryValue( - LPCTSTR pszValueName, - const void* pValue, - ULONG nBytes) throw(); + LONG QueryQWORDValue( + LPCTSTR pszValueName, + ULONGLONG& qwValue) throw(); - LONG SetDWORDValue(LPCTSTR pszValueName, DWORD dwValue) throw(); + LONG QueryStringValue( + LPCTSTR pszValueName, + LPTSTR pszValue, + ULONG* pnChars) throw(); - LONG SetGUIDValue(LPCTSTR pszValueName, REFGUID guidValue) throw(); + LONG QueryValue( + LPCTSTR pszValueName, + DWORD* pdwType, + void* pData, + ULONG* pnBytes) throw(); - LONG SetKeySecurity(SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR psd) throw(); + LONG QueryValue( + DWORD& dwValue, + LPCTSTR lpszValueName); - LONG SetKeyValue( - LPCTSTR lpszKeyName, - LPCTSTR lpszValue, - LPCTSTR lpszValueName) throw(); + LONG QueryValue( + LPTSTR szValue, + LPCTSTR lpszValueName, + DWORD* pdwCount); - LONG SetMultiStringValue(LPCTSTR pszValueName, LPCTSTR pszValue) throw(); + LONG RecurseDeleteKey(LPCTSTR lpszKey) throw(); - LONG SetQWORDValue(LPCTSTR pszValueName, ULONGLONG qwValue) throw(); + LONG SetBinaryValue( + LPCTSTR pszValueName, + const void* pValue, + ULONG nBytes) throw(); - LONG SetStringValue( - LPCTSTR pszValueName, - LPCTSTR pszValue, - DWORD dwType) throw(); + LONG SetDWORDValue(LPCTSTR pszValueName, DWORD dwValue) throw(); - LONG SetValue( - LPCTSTR pszValueName, - DWORD dwType, - const void* pValue, - ULONG nBytes) throw(); + LONG SetGUIDValue(LPCTSTR pszValueName, REFGUID guidValue) throw(); - static LONG SetValue( - HKEY hKeyParent, - LPCTSTR lpszKeyName, - LPCTSTR lpszValue, - LPCTSTR lpszValueName); + LONG SetKeySecurity(SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR psd) throw(); - LONG SetValue( - DWORD dwValue, - LPCTSTR lpszValueName); + LONG SetKeyValue( + LPCTSTR lpszKeyName, + LPCTSTR lpszValue, + LPCTSTR lpszValueName) throw(); - LONG SetValue( - LPCTSTR lpszValue, - LPCTSTR lpszValueName, - bool bMulti, - int nValueLen); + LONG SetMultiStringValue(LPCTSTR pszValueName, LPCTSTR pszValue) throw(); - operator HKEY() const throw(); - CRegKey& operator= (CRegKey& key) throw(); + LONG SetQWORDValue(LPCTSTR pszValueName, ULONGLONG qwValue) throw(); - HKEY m_hKey; -}; + LONG SetStringValue( + LPCTSTR pszValueName, + LPCTSTR pszValue, + DWORD dwType) throw(); -void test_CRegKey() { - CRegKey key; - char data[1024]; - ULONG bytesRead; - key.QueryBinaryValue("foo", data, &bytesRead); // $ local_source + LONG SetValue( + LPCTSTR pszValueName, + DWORD dwType, + const void* pValue, + ULONG nBytes) throw(); - DWORD value; - key.QueryDWORDValue("foo", value); // $ local_source - - GUID guid; - key.QueryGUIDValue("foo", guid); // $ local_source - - key.QueryMultiStringValue("foo", data, &bytesRead); // $ local_source - - ULONGLONG qword; - key.QueryQWORDValue("foo", qword); // $ local_source - - key.QueryStringValue("foo", data, &bytesRead); // $ local_source - - key.QueryValue(data, "foo", &bytesRead); // $ local_source - - DWORD type; - key.QueryValue("foo", &type, data, &bytesRead); // $ local_source - - DWORD value2; - key.QueryValue(value2, "foo"); // $ local_source + static LONG SetValue( + HKEY hKeyParent, + LPCTSTR lpszKeyName, + LPCTSTR lpszValue, + LPCTSTR lpszValueName); + + LONG SetValue( + DWORD dwValue, + LPCTSTR lpszValueName); + + LONG SetValue( + LPCTSTR lpszValue, + LPCTSTR lpszValueName, + bool bMulti, + int nValueLen); + + operator HKEY() const throw(); + CRegKey& operator= (CRegKey& key) throw(); + + HKEY m_hKey; + }; + + void test_CRegKey() { + CRegKey key; + char data[1024]; + ULONG bytesRead; + key.QueryBinaryValue("foo", data, &bytesRead); // $ local_source + + DWORD value; + key.QueryDWORDValue("foo", value); // $ local_source + + GUID guid; + key.QueryGUIDValue("foo", guid); // $ local_source + + key.QueryMultiStringValue("foo", data, &bytesRead); // $ local_source + + ULONGLONG qword; + key.QueryQWORDValue("foo", qword); // $ local_source + + key.QueryStringValue("foo", data, &bytesRead); // $ local_source + + key.QueryValue(data, "foo", &bytesRead); // $ local_source + + DWORD type; + key.QueryValue("foo", &type, data, &bytesRead); // $ local_source + + DWORD value2; + key.QueryValue(value2, "foo"); // $ local_source + } } \ No newline at end of file