Skip to content

Commit 5f05417

Browse files
committed
C++: Add MaD model for 'CComSafeArray'.
1 parent e831cb5 commit 5f05417

2 files changed

Lines changed: 40 additions & 13 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
extensions:
2+
- addsTo:
3+
pack: codeql/cpp-all
4+
extensible: summaryModel
5+
data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance
6+
- ["", "CComSafeArray", True, "CComSafeArray", "(const CComSafeArray &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
7+
- ["", "CComSafeArray", True, "CComSafeArray", "(const SAFEARRAY &)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"]
8+
- ["", "CComSafeArray", True, "CComSafeArray", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"]
9+
- ["", "CComSafeArray", True, "Add", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"]
10+
- ["", "CComSafeArray<T>", True, "Add", "(const T &,BOOL)", "", "Argument[*@0]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"]
11+
- ["", "CComSafeArray", True, "Attach", "", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"]
12+
- ["", "CComSafeArray", True, "CopyFrom", "", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"]
13+
- ["", "CComSafeArray", True, "CopyTo", "", "", "Argument[-1].Field[*m_psa]", "Argument[*0]", "value", "manual"]
14+
- ["", "CComSafeArray", True, "Create", "(const SAFEARRAYBOUND *,UINT)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"]
15+
- ["", "CComSafeArray", True, "GetAt", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "ReturnValue[*@]", "value", "manual"]
16+
- ["", "CComSafeArray", True, "GetLowerBound", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
17+
- ["", "CComSafeArray", True, "GetSafeArrayPtr", "", "", "Argument[-1].Field[*m_psa]", "ReturnValue[*]", "value", "manual"]
18+
- ["", "CComSafeArray", True, "GetUpperBound", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
19+
- ["", "CComSafeArray", True, "MultiDimGetAt", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "Argument[*@1]", "value", "manual"]
20+
- ["", "CComSafeArray", True, "MultiDimSetAt", "", "", "Argument[*@1]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"]
21+
- ["", "CComSafeArray", True, "SetAt", "", "", "Argument[*@1]", "Argument[-1].Field[*m_psa].Field[*@pvData]", "value", "manual"]
22+
- ["", "CComSafeArray", True, "operator LPSAFEARRAY", "", "", "Argument[-1].Field[*m_psa]", "ReturnValue[*]", "value", "manual"]
23+
- ["", "CComSafeArray", True, "operator[]", "", "", "Argument[-1].Field[*m_psa].Field[*@pvData]", "ReturnValue[*@]", "value", "manual"]
24+
- ["", "CComSafeArray", True, "operator=", "(const CComSafeArray&)", "", "Argument[*0].Field[*m_psa]", "ReturnValue[*]", "value", "manual"]
25+
- ["", "CComSafeArray", True, "operator=", "(const CComSafeArray&)", "", "Argument[*0].Field[*m_psa]", "Argument[-1].Field[*m_psa]", "value", "manual"]
26+
- ["", "CComSafeArray", True, "operator=", "(const SAFEARRAY *)", "", "Argument[*0]", "Argument[-1].Field[*m_psa]", "value", "manual"]
27+
- ["", "CComSafeArray", True, "operator=", "(const SAFEARRAY *)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]

cpp/ql/test/library-tests/dataflow/taint-tests/atl.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -572,33 +572,33 @@ void test_CComSafeArray() {
572572
sink(safe->pvData); // $ ir
573573
{
574574
CComSafeArray<int> c(safe);
575-
sink(c[0]); // $ MISSING: ir
576-
sink(c.GetAt(0)); // $ MISSING: ir
577-
sink(c.GetSafeArrayPtr()->pvData); // $ MISSING: ir
578-
sink(c.m_psa->pvData); // $ MISSING: ir
575+
sink(c[0]); // $ ir
576+
sink(c.GetAt(0)); // $ ir
577+
sink(c.GetSafeArrayPtr()->pvData); // $ ir
578+
sink(c.m_psa->pvData); // $ ir
579579
}
580580
{
581581
CComSafeArray<int> c;
582582
sink(c[0]);
583583
sink(c.GetAt(0));
584584
sink(c.GetSafeArrayPtr()->pvData);
585585
c.Add(safe);
586-
sink(c[0]); // $ MISSING: ir
587-
sink(c.GetAt(0)); // $ MISSING: ir
588-
sink(c.GetSafeArrayPtr()->pvData); // $ MISSING: ir
589-
sink(static_cast<LPSAFEARRAY>(c)->pvData); // $ MISSING: ir
586+
sink(c[0]); // $ ir
587+
sink(c.GetAt(0)); // $ ir
588+
sink(c.GetSafeArrayPtr()->pvData); // $ ir
589+
sink(static_cast<LPSAFEARRAY>(c)->pvData); // $ ir
590590
}
591591
{
592592
CComSafeArray<int> c;
593593
c.Add(source<int>(), true);
594-
sink(c[0]); // $ MISSING: ir
595-
sink(c.GetAt(0)); // $ MISSING: ir
596-
sink(c.GetSafeArrayPtr()->pvData); // $ MISSING: ir
594+
sink(c[0]); // $ ir
595+
sink(c.GetAt(0)); // $ ir
596+
sink(c.GetSafeArrayPtr()->pvData); // $ ir
597597
}
598598
{
599599
CComSafeArray<int> c;
600600
c.SetAt(0, source<int>(), true);
601-
sink(c[0]); // $ MISSING: ir
602-
sink(c[0L]); // $ MISSING: ir
601+
sink(c[0]); // $ ir
602+
sink(c[0L]); // $ ir
603603
}
604604
}

0 commit comments

Comments
 (0)