Skip to content

Commit 749602c

Browse files
committed
C++: Add failing tests with CA2AEX and friends.
1 parent f688470 commit 749602c

1 file changed

Lines changed: 82 additions & 0 deletions

File tree

  • cpp/ql/test/library-tests/dataflow/taint-tests

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

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,85 @@ void test__U_STRINGorID() {
8484
sink(u.m_lpstr); // $ ir
8585
}
8686
}
87+
88+
template <int t_nBufferLength>
89+
struct CA2AEX {
90+
LPSTR m_psz;
91+
char m_szBuffer[t_nBufferLength];
92+
93+
CA2AEX(LPCSTR psz, UINT nCodePage);
94+
CA2AEX(LPCSTR psz);
95+
96+
~CA2AEX();
97+
98+
operator LPSTR() const throw();
99+
};
100+
101+
void test_CA2AEX() {
102+
{
103+
LPSTR x = indirect_source<char>();
104+
CA2AEX<128> a(x);
105+
sink(static_cast<LPSTR>(a)); // $ MISSING: ir
106+
sink(a.m_psz); // $ MISSING: ir
107+
sink(a.m_szBuffer); // $ MISSING: ir
108+
}
109+
110+
{
111+
LPSTR x = indirect_source<char>();
112+
CA2AEX<128> a(x, 0);
113+
sink(static_cast<LPSTR>(a)); // $ MISSING: ir
114+
sink(a.m_psz); // $ MISSING: ir
115+
sink(a.m_szBuffer); // $ MISSING: ir
116+
}
117+
}
118+
119+
template<int t_nBufferLength>
120+
struct CA2CAEX {
121+
CA2CAEX(LPCSTR psz, UINT nCodePage) ;
122+
CA2CAEX(LPCSTR psz) ;
123+
~CA2CAEX() throw();
124+
operator LPCSTR() const throw();
125+
LPCSTR m_psz;
126+
};
127+
128+
void test_CA2CAEX() {
129+
LPCSTR x = indirect_source<char>();
130+
{
131+
CA2CAEX<128> a(x);
132+
sink(static_cast<LPCSTR>(a)); // $ MISSING: ir
133+
sink(a.m_psz); // $ MISSING: ir
134+
sink(a.m_psz); // $ MISSING: ir
135+
}
136+
{
137+
CA2CAEX<128> a(x, 0);
138+
sink(static_cast<LPCSTR>(a)); // $ MISSING: ir
139+
sink(a.m_psz); // $ MISSING: ir
140+
sink(a.m_psz); // $ MISSING: ir
141+
}
142+
}
143+
144+
template <int t_nBufferLength>
145+
struct CA2WEX {
146+
CA2WEX(LPCSTR psz, UINT nCodePage) ;
147+
CA2WEX(LPCSTR psz) ;
148+
~CA2WEX() throw();
149+
operator LPWSTR() const throw();
150+
LPWSTR m_psz;
151+
wchar_t m_szBuffer[t_nBufferLength];
152+
};
153+
154+
void test_CA2WEX() {
155+
LPCSTR x = indirect_source<char>();
156+
{
157+
CA2WEX<128> a(x);
158+
sink(static_cast<LPWSTR>(a)); // $ MISSING: ir
159+
sink(a.m_psz); // $ MISSING: ir
160+
sink(a.m_psz); // $ MISSING: ir
161+
}
162+
{
163+
CA2WEX<128> a(x, 0);
164+
sink(static_cast<LPWSTR>(a)); // $ MISSING: ir
165+
sink(a.m_psz); // $ MISSING: ir
166+
sink(a.m_psz); // $ MISSING: ir
167+
}
168+
}

0 commit comments

Comments
 (0)