mirror of
https://github.com/github/codeql.git
synced 2026-04-30 03:05:15 +02:00
Merge remote-tracking branch 'upstream/main' into mathiasvp/replace-ast-with-ir-use-usedataflow
This commit is contained in:
@@ -54,22 +54,22 @@ void test1()
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(snprintf(buffer, 256, "%s", string::source()));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(snprintf(buffer, 256, string::source(), "Hello."));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(snprintf(buffer, 256, "%s %s %s", "a", "b", string::source()));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(snprintf(buffer, 256, "%.*s", 10, string::source()));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -80,39 +80,39 @@ void test1()
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(snprintf(buffer, 256, "%i", source()));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(snprintf(buffer, 256, "%.*s", source(), "Hello."));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(snprintf(buffer, 256, "%p", string::source()));
|
||||
sink(buffer); // $ ast MISSING: ir // tainted (debatable)
|
||||
sink(buffer); // $ ast,ir // tainted (debatable)
|
||||
}
|
||||
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(sprintf(buffer, "%s", string::source()));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(sprintf(buffer, "%ls", wstring::source()));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
{
|
||||
wchar_t wbuffer[256] = {0};
|
||||
sink(swprintf(wbuffer, 256, L"%s", wstring::source()));
|
||||
sink(wbuffer); // $ ast MISSING: ir
|
||||
sink(wbuffer); // $ ast,ir
|
||||
}
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(mysprintf(buffer, 256, "%s", string::source()));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -133,7 +133,7 @@ void test1()
|
||||
{
|
||||
char buffer[256] = {0};
|
||||
sink(sscanf(string::source(), "%s", &buffer));
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ template<typename T> void sink(std::unique_ptr<T>&);
|
||||
void test_make_shared() {
|
||||
std::shared_ptr<int> p = std::make_shared<int>(source());
|
||||
sink(*p); // $ ast,ir
|
||||
sink(p); // $ ast MISSING: ir
|
||||
sink(p); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_make_shared_array() {
|
||||
@@ -22,7 +22,7 @@ void test_make_shared_array() {
|
||||
void test_make_unique() {
|
||||
std::unique_ptr<int> p = std::make_unique<int>(source());
|
||||
sink(*p); // $ ast,ir
|
||||
sink(p); // $ ast MISSING: ir
|
||||
sink(p); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_make_unique_array() {
|
||||
|
||||
@@ -28,7 +28,7 @@ void test_string()
|
||||
|
||||
sink(a); // $ ast,ir
|
||||
sink(b);
|
||||
sink(c); // $ ast MISSING: ir
|
||||
sink(c); // $ ast,ir
|
||||
sink(b.c_str());
|
||||
sink(c.c_str()); // $ ast,ir
|
||||
}
|
||||
@@ -54,7 +54,7 @@ void test_string3()
|
||||
std::string ss(cs);
|
||||
|
||||
sink(cs); // $ ast,ir
|
||||
sink(ss); // $ ast MISSING: ir
|
||||
sink(ss); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string4()
|
||||
@@ -68,7 +68,7 @@ void test_string4()
|
||||
cs = ss.c_str();
|
||||
|
||||
sink(cs); // $ ast,ir
|
||||
sink(ss); // $ ast MISSING: ir
|
||||
sink(ss); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_constructors_assignments()
|
||||
@@ -90,9 +90,9 @@ void test_string_constructors_assignments()
|
||||
std::string s3;
|
||||
s3 = source();
|
||||
|
||||
sink(s1); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s3); // $ ast MISSING: ir
|
||||
sink(s1); // $ ast,ir
|
||||
sink(s2); // $ ast,ir
|
||||
sink(s3); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -111,8 +111,8 @@ void test_string_constructors_assignments()
|
||||
std::string s2;
|
||||
s2 = std::string(source());
|
||||
|
||||
sink(s1); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s1); // $ ast,ir
|
||||
sink(s2); // $ ast,ir
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,25 +156,25 @@ void test_string_append() {
|
||||
std::string s5, s6, s7, s8, s9;
|
||||
|
||||
s5 = s3 + s4;
|
||||
sink(s5); // $ ast MISSING: ir
|
||||
sink(s5); // $ ast,ir
|
||||
|
||||
s6 = s3;
|
||||
sink(s6 += s4); // $ ast MISSING: ir
|
||||
sink(s6); // $ ast MISSING: ir
|
||||
sink(s6 += s4); // $ ast,ir
|
||||
sink(s6); // $ ast,ir
|
||||
|
||||
s7 = s3;
|
||||
sink(s7 += source()); // $ ast,ir
|
||||
sink(s7 += " "); // $ ast MISSING: ir
|
||||
sink(s7); // $ ast MISSING: ir
|
||||
sink(s7 += " "); // $ ast,ir
|
||||
sink(s7); // $ ast,ir
|
||||
|
||||
s8 = s3;
|
||||
s8.append(s4);
|
||||
sink(s8); // $ ast MISSING: ir
|
||||
sink(s8); // $ ast,ir
|
||||
|
||||
s9 = s3;
|
||||
s9.append(source());
|
||||
s9.append(" ");
|
||||
sink(s9); // $ ast MISSING: ir
|
||||
sink(s9); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -182,7 +182,7 @@ void test_string_append() {
|
||||
char c = ns_char::source();
|
||||
|
||||
s10.append(1, c);
|
||||
sink(s10); // $ ast MISSING: ir
|
||||
sink(s10); // $ ast,ir
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,14 +196,14 @@ void test_string_assign() {
|
||||
sink(s3.assign(s1));
|
||||
sink(s3);
|
||||
|
||||
sink(s4.assign(s2)); // $ ast MISSING: ir
|
||||
sink(s4); // $ ast MISSING: ir
|
||||
sink(s4.assign(s2)); // $ ast,ir
|
||||
sink(s4); // $ ast,ir
|
||||
|
||||
sink(s5.assign(10, c)); // $ ast MISSING: ir
|
||||
sink(s5); // $ ast MISSING: ir
|
||||
sink(s5.assign(10, c)); // $ ast,ir
|
||||
sink(s5); // $ ast,ir
|
||||
|
||||
sink(s6.assign(s1));
|
||||
sink(s6); // $ SPURIOUS: ast
|
||||
sink(s6); // $ SPURIOUS: ast,ir
|
||||
}
|
||||
|
||||
void test_string_insert() {
|
||||
@@ -217,16 +217,16 @@ void test_string_insert() {
|
||||
sink(s3);
|
||||
|
||||
s4 = s2;
|
||||
sink(s4.insert(0, s1)); // $ ast MISSING: ir
|
||||
sink(s4); // $ ast MISSING: ir
|
||||
sink(s4.insert(0, s1)); // $ ast,ir
|
||||
sink(s4); // $ ast,ir
|
||||
|
||||
s5 = s1;
|
||||
sink(s5.insert(0, s2)); // $ ast MISSING: ir
|
||||
sink(s5); // $ ast MISSING: ir
|
||||
sink(s5.insert(0, s2)); // $ ast,ir
|
||||
sink(s5); // $ ast,ir
|
||||
|
||||
s6 = s1;
|
||||
sink(s6.insert(0, 10, c)); // $ ast MISSING: ir
|
||||
sink(s6); // $ ast MISSING: ir
|
||||
sink(s6.insert(0, 10, c)); // $ ast,ir
|
||||
sink(s6); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_replace() {
|
||||
@@ -240,16 +240,16 @@ void test_string_replace() {
|
||||
sink(s3);
|
||||
|
||||
s4 = s2;
|
||||
sink(s4.replace(1, 2, s1)); // $ ast MISSING: ir
|
||||
sink(s4); // $ ast MISSING: ir
|
||||
sink(s4.replace(1, 2, s1)); // $ ast,ir
|
||||
sink(s4); // $ ast,ir
|
||||
|
||||
s5 = s1;
|
||||
sink(s5.replace(1, 2, s2)); // $ ast MISSING: ir
|
||||
sink(s5); // $ ast MISSING: ir
|
||||
sink(s5.replace(1, 2, s2)); // $ ast,ir
|
||||
sink(s5); // $ ast,ir
|
||||
|
||||
s6 = s1;
|
||||
sink(s6.replace(1, 2, 10, c)); // $ ast MISSING: ir
|
||||
sink(s6); // $ ast MISSING: ir
|
||||
sink(s6.replace(1, 2, 10, c)); // $ ast,ir
|
||||
sink(s6); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_copy() {
|
||||
@@ -262,7 +262,7 @@ void test_string_copy() {
|
||||
sink(b1);
|
||||
|
||||
s2.copy(b2, s1.length(), 0);
|
||||
sink(b2); // $ ast MISSING: ir
|
||||
sink(b2); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_swap() {
|
||||
@@ -272,17 +272,17 @@ void test_string_swap() {
|
||||
std::string s4(source());
|
||||
|
||||
sink(s1);
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast,ir
|
||||
sink(s3);
|
||||
sink(s4); // $ ast MISSING: ir
|
||||
sink(s4); // $ ast,ir
|
||||
|
||||
s1.swap(s2);
|
||||
s4.swap(s3);
|
||||
|
||||
sink(s1); // $ ast MISSING: ir
|
||||
sink(s2); // $ SPURIOUS: ast
|
||||
sink(s3); // $ ast MISSING: ir
|
||||
sink(s4); // $ SPURIOUS: ast
|
||||
sink(s1); // $ ast,ir
|
||||
sink(s2); // $ SPURIOUS: ast,ir
|
||||
sink(s3); // $ ast,ir
|
||||
sink(s4); // $ SPURIOUS: ast,ir
|
||||
}
|
||||
|
||||
void test_string_clear() {
|
||||
@@ -290,17 +290,17 @@ void test_string_clear() {
|
||||
std::string s2(source());
|
||||
std::string s3(source());
|
||||
|
||||
sink(s1); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s3); // $ ast MISSING: ir
|
||||
sink(s1); // $ ast,ir
|
||||
sink(s2); // $ ast,ir
|
||||
sink(s3); // $ ast,ir
|
||||
|
||||
s1.clear();
|
||||
s2 = "";
|
||||
s3 = s3;
|
||||
|
||||
sink(s1); // $ SPURIOUS: ast
|
||||
sink(s1); // $ SPURIOUS: ast,ir
|
||||
sink(s2);
|
||||
sink(s3); // $ ast MISSING: ir
|
||||
sink(s3); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_data()
|
||||
@@ -309,7 +309,7 @@ void test_string_data()
|
||||
std::string b(source());
|
||||
|
||||
sink(a.data());
|
||||
sink(b.data()); // $ ast MISSING: ir
|
||||
sink(b.data()); // $ ast,ir
|
||||
sink(a.length());
|
||||
sink(b.length());
|
||||
}
|
||||
@@ -337,9 +337,9 @@ void test_string_at()
|
||||
b.at(0) = ns_char::source();
|
||||
c[0] = a[0];
|
||||
|
||||
sink(a); // $ ast MISSING: ir
|
||||
sink(b); // $ ast MISSING: ir
|
||||
sink(c); // $ ast MISSING: ir
|
||||
sink(a); // $ ast,ir
|
||||
sink(b); // $ ast,ir
|
||||
sink(c); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_data_more()
|
||||
@@ -347,8 +347,8 @@ void test_string_data_more()
|
||||
std::string str("123");
|
||||
|
||||
str.data()[1] = ns_char::source();
|
||||
sink(str); // $ ast MISSING: ir
|
||||
sink(str.data()); // $ ast MISSING: ir
|
||||
sink(str); // $ ast,ir
|
||||
sink(str.data()); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_iterators() {
|
||||
@@ -360,8 +360,8 @@ void test_string_iterators() {
|
||||
std::string s4("world");
|
||||
|
||||
sink(s1);
|
||||
sink(s1.append(s2.begin(), s2.end())); // $ ast MISSING: ir
|
||||
sink(s1); // $ ast MISSING: ir
|
||||
sink(s1.append(s2.begin(), s2.end())); // $ ast,ir
|
||||
sink(s1); // $ ast,ir
|
||||
|
||||
sink(s3);
|
||||
sink(s3.append(s4.begin(), s4.end()));
|
||||
@@ -433,8 +433,8 @@ void test_string_insert_more()
|
||||
sink(s1.insert(0, cs1));
|
||||
sink(s1);
|
||||
|
||||
sink(s2.insert(0, cs2)); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s2.insert(0, cs2)); // $ ast,ir
|
||||
sink(s2); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_iterator_methods()
|
||||
@@ -447,7 +447,7 @@ void test_string_iterator_methods()
|
||||
sink(a);
|
||||
|
||||
sink(b.insert(b.begin(), 10, ns_char::source())); // $ ast MISSING: ir
|
||||
sink(b); // $ ast MISSING: ir
|
||||
sink(b); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -460,10 +460,10 @@ void test_string_iterator_methods()
|
||||
sink(c);
|
||||
|
||||
sink(d.insert(d.end(), s2.begin(), s2.end())); // $ ast MISSING: ir
|
||||
sink(d); // $ ast MISSING: ir
|
||||
sink(d); // $ ast,ir
|
||||
|
||||
sink(s2.insert(s2.end(), s1.begin(), s1.end())); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -475,11 +475,11 @@ void test_string_iterator_methods()
|
||||
sink(e.append(s3.begin(), s3.end()));
|
||||
sink(e);
|
||||
|
||||
sink(f.append(s4.begin(), s4.end())); // $ ast MISSING: ir
|
||||
sink(f); // $ ast MISSING: ir
|
||||
sink(f.append(s4.begin(), s4.end())); // $ ast,ir
|
||||
sink(f); // $ ast,ir
|
||||
|
||||
sink(s4.append(s3.begin(), s3.end())); // $ ast MISSING: ir
|
||||
sink(s4); // $ ast MISSING: ir
|
||||
sink(s4.append(s3.begin(), s3.end())); // $ ast,ir
|
||||
sink(s4); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -491,11 +491,11 @@ void test_string_iterator_methods()
|
||||
sink(g.assign(s5.cbegin(), s5.cend()));
|
||||
sink(g);
|
||||
|
||||
sink(h.assign(s6.cbegin(), s6.cend())); // $ ast MISSING: ir
|
||||
sink(h); // $ ast MISSING: ir
|
||||
sink(h.assign(s6.cbegin(), s6.cend())); // $ ast,ir
|
||||
sink(h); // $ ast,ir
|
||||
|
||||
sink(s6.assign(s5.cbegin(), s5.cend()));
|
||||
sink(s6); // $ SPURIOUS: ast
|
||||
sink(s6); // $ SPURIOUS: ast,ir
|
||||
}
|
||||
}
|
||||
|
||||
@@ -508,9 +508,9 @@ void test_string_constructors_more() {
|
||||
std::string s4(s2.begin(), s2.end());
|
||||
|
||||
sink(s1);
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast,ir
|
||||
sink(s3);
|
||||
sink(s4); // $ ast MISSING: ir
|
||||
sink(s4); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_string_front_back() {
|
||||
@@ -533,15 +533,15 @@ void test_string_return_assign() {
|
||||
std::string f("ff");
|
||||
|
||||
sink( a += (b += "bb") );
|
||||
sink( c += (d += source()) ); // $ ast MISSING: ir
|
||||
sink( c += (d += source()) ); // $ ast,ir
|
||||
sink( (e += "ee") += source() ); // $ ast,ir
|
||||
sink( (f += source()) += "ff" ); // $ ast MISSING: ir
|
||||
sink( (f += source()) += "ff" ); // $ ast,ir
|
||||
sink(a);
|
||||
sink(b);
|
||||
sink(c); // $ ast MISSING: ir
|
||||
sink(d); // $ ast MISSING: ir
|
||||
sink(e); // $ ast MISSING: ir
|
||||
sink(f); // $ ast MISSING: ir
|
||||
sink(c); // $ ast,ir
|
||||
sink(d); // $ ast,ir
|
||||
sink(e); // $ ast,ir
|
||||
sink(f); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -553,14 +553,14 @@ void test_string_return_assign() {
|
||||
std::string f("ff");
|
||||
|
||||
sink( a.assign(b.assign("bb")) );
|
||||
sink( c.assign(d.assign(source())) ); // $ ast MISSING: ir
|
||||
sink( e.assign("ee").assign(source()) ); // $ ast MISSING: ir
|
||||
sink( c.assign(d.assign(source())) ); // $ ast,ir
|
||||
sink( e.assign("ee").assign(source()) ); // $ ast,ir
|
||||
sink( f.assign(source()).assign("ff") );
|
||||
sink(a);
|
||||
sink(b);
|
||||
sink(c); // $ ast MISSING: ir
|
||||
sink(d); // $ ast MISSING: ir
|
||||
sink(e); // $ ast MISSING: ir
|
||||
sink(f); // $ SPURIOUS: ast
|
||||
sink(c); // $ ast,ir
|
||||
sink(d); // $ ast,ir
|
||||
sink(e); // $ ast,ir
|
||||
sink(f); // $ SPURIOUS: ast,ir
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,10 +35,10 @@ void test_stringstream_string(int amount)
|
||||
sink(ss5 << t); // $ ast,ir
|
||||
|
||||
sink(ss1);
|
||||
sink(ss2); // $ ast MISSING: ir
|
||||
sink(ss3); // $ ast MISSING: ir
|
||||
sink(ss4); // $ ast MISSING: ir
|
||||
sink(ss5); // $ ast MISSING: ir
|
||||
sink(ss2); // $ ast,ir
|
||||
sink(ss3); // $ ast,ir
|
||||
sink(ss4); // $ ast,ir
|
||||
sink(ss5); // $ ast,ir
|
||||
sink(ss1.str());
|
||||
sink(ss2.str()); // $ ast,ir
|
||||
sink(ss3.str()); // $ ast,ir
|
||||
@@ -49,22 +49,22 @@ void test_stringstream_string(int amount)
|
||||
ss6.str(source()); // (overwrites)
|
||||
ss7.str(source());
|
||||
ss7.str("abc"); // (overwrites)
|
||||
sink(ss6); // $ ast MISSING: ir
|
||||
sink(ss7); // $ SPURIOUS: ast
|
||||
sink(ss6); // $ ast,ir
|
||||
sink(ss7); // $ SPURIOUS: ast,ir
|
||||
|
||||
sink(ss8.put('a'));
|
||||
sink(ss9.put(ns_char::source())); // $ ast MISSING: ir
|
||||
sink(ss9.put(ns_char::source())); // $ ast,ir
|
||||
sink(ss10.put('a').put(ns_char::source()).put('z')); // $ ast,ir
|
||||
sink(ss8);
|
||||
sink(ss9); // $ ast MISSING: ir
|
||||
sink(ss10); // $ ast MISSING: ir
|
||||
sink(ss9); // $ ast,ir
|
||||
sink(ss10); // $ ast,ir
|
||||
|
||||
sink(ss11.write("begin", 5));
|
||||
sink(ss12.write(source(), 5)); // $ ast MISSING: ir
|
||||
sink(ss12.write(source(), 5)); // $ ast,ir
|
||||
sink(ss13.write("begin", 5).write(source(), amount).write("end", 3)); // $ ast,ir
|
||||
sink(ss11);
|
||||
sink(ss12); // $ ast MISSING: ir
|
||||
sink(ss13); // $ ast MISSING: ir
|
||||
sink(ss12); // $ ast,ir
|
||||
sink(ss13); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_stringstream_int(int source)
|
||||
@@ -73,12 +73,12 @@ void test_stringstream_int(int source)
|
||||
int v1 = 0, v2 = 0;
|
||||
|
||||
sink(ss1 << 1234);
|
||||
sink(ss2 << source); // $ ast MISSING: ir
|
||||
sink(ss2 << source); // $ ast,ir
|
||||
sink(ss1 >> v1);
|
||||
sink(ss2 >> v2); // $ ast,ir
|
||||
|
||||
sink(ss1);
|
||||
sink(ss2); // $ ast MISSING: ir
|
||||
sink(ss2); // $ ast,ir
|
||||
sink(ss1.str());
|
||||
sink(ss2.str()); // $ ast,ir
|
||||
sink(v1);
|
||||
@@ -97,14 +97,14 @@ void test_stringstream_constructors()
|
||||
std::stringstream ss6;
|
||||
|
||||
sink(ss5 = std::stringstream("abc"));
|
||||
sink(ss6 = std::stringstream(source())); // $ ast MISSING: ir
|
||||
sink(ss6 = std::stringstream(source())); // $ ast,ir
|
||||
|
||||
sink(ss1);
|
||||
sink(ss2); // $ ast MISSING: ir
|
||||
sink(ss2); // $ ast,ir
|
||||
sink(ss3);
|
||||
sink(ss4); // $ ast MISSING: ir
|
||||
sink(ss4); // $ ast,ir
|
||||
sink(ss5);
|
||||
sink(ss6); // $ ast MISSING: ir
|
||||
sink(ss6); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_stringstream_swap()
|
||||
@@ -117,10 +117,10 @@ void test_stringstream_swap()
|
||||
ss1.swap(ss2);
|
||||
ss4.swap(ss3);
|
||||
|
||||
sink(ss1); // $ ast MISSING: ir
|
||||
sink(ss2); // $ SPURIOUS: ast
|
||||
sink(ss3); // $ ast MISSING: ir
|
||||
sink(ss4); // $ SPURIOUS: ast
|
||||
sink(ss1); // $ ast,ir
|
||||
sink(ss2); // $ SPURIOUS: ast,ir
|
||||
sink(ss3); // $ ast,ir
|
||||
sink(ss4); // $ SPURIOUS: ast,ir
|
||||
}
|
||||
|
||||
void test_stringstream_in()
|
||||
@@ -146,9 +146,9 @@ void test_stringstream_in()
|
||||
sink(ss2 >> s2); // $ ast,ir
|
||||
sink(ss2 >> s3 >> s4); // $ ast,ir
|
||||
sink(s1);
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s3); // $ ast MISSING: ir
|
||||
sink(s4); // $ ast MISSING: ir
|
||||
sink(s2); // $ ast,ir
|
||||
sink(s3); // $ ast,ir
|
||||
sink(s4); // $ ast,ir
|
||||
|
||||
sink(ss1 >> b1);
|
||||
sink(ss2 >> b2); // $ ast,ir
|
||||
@@ -193,7 +193,7 @@ void test_stringstream_putback()
|
||||
sink(ss.get());
|
||||
sink(ss.putback('b'));
|
||||
sink(ss.get());
|
||||
sink(ss.putback(ns_char::source())); // $ ast MISSING: ir
|
||||
sink(ss.putback(ns_char::source())); // $ ast,ir
|
||||
sink(ss.get()); // $ ast,ir
|
||||
}
|
||||
|
||||
@@ -236,20 +236,20 @@ void test_getline()
|
||||
sink(getline(ss2, s3)); // $ ast,ir
|
||||
sink(getline(ss1, s3));
|
||||
sink(s1);
|
||||
sink(s2); // $ ast MISSING: ir
|
||||
sink(s3); // $ SPURIOUS: ast
|
||||
sink(s2); // $ ast,ir
|
||||
sink(s3); // $ SPURIOUS: ast,ir
|
||||
|
||||
sink(getline(ss1, s4, ' '));
|
||||
sink(getline(ss2, s5, ' ')); // $ ast,ir
|
||||
sink(getline(ss2, s6, ' ')); // $ ast,ir
|
||||
sink(getline(ss1, s6, ' '));
|
||||
sink(s4);
|
||||
sink(s5); // $ ast MISSING: ir
|
||||
sink(s6); // $ SPURIOUS: ast
|
||||
sink(s5); // $ ast,ir
|
||||
sink(s6); // $ SPURIOUS: ast,ir
|
||||
|
||||
sink(getline(getline(ss2, s7), s8)); // $ ast,ir
|
||||
sink(s7); // $ ast MISSING: ir
|
||||
sink(s8); // $ ast MISSING: ir
|
||||
sink(s7); // $ ast,ir
|
||||
sink(s8); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_chaining()
|
||||
@@ -264,5 +264,5 @@ void test_chaining()
|
||||
sink(b2); // $ ast,ir
|
||||
|
||||
sink(ss2.write("abc", 3).flush().write(source(), 3).flush().write("xyz", 3)); // $ ast,ir
|
||||
sink(ss2); // $ ast MISSING: ir
|
||||
sink(ss2); // $ ast,ir
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ namespace strings
|
||||
strcpy(buffer, "Hello, ");
|
||||
sink(buffer);
|
||||
strcat(buffer, tainted);
|
||||
sink(buffer); // $ ast MISSING: ir
|
||||
sink(buffer); // $ ast,ir
|
||||
}
|
||||
}
|
||||
|
||||
@@ -550,7 +550,7 @@ void *memccpy(void *dest, const void *src, int c, size_t n);
|
||||
void test_memccpy(int *source) {
|
||||
int dest[16];
|
||||
memccpy(dest, source, 42, sizeof(dest));
|
||||
sink(dest); // $ ast=550:24 MISSING: ir SPURIOUS: ast=551:6
|
||||
sink(dest); // $ ast=550:24 ir SPURIOUS: ast=551:6
|
||||
}
|
||||
|
||||
// --- strcat and related functions ---
|
||||
|
||||
@@ -95,16 +95,7 @@ module IRTest {
|
||||
override predicate isSink(DataFlow::Node sink) {
|
||||
exists(FunctionCall call |
|
||||
call.getTarget().getName() = "sink" and
|
||||
sink.asConvertedExpr() = call.getAnArgument()
|
||||
or
|
||||
call.getTarget().getName() = "sink" and
|
||||
sink.asExpr() = call.getAnArgument() and
|
||||
sink.asConvertedExpr() instanceof ReferenceDereferenceExpr
|
||||
)
|
||||
or
|
||||
exists(ReadSideEffectInstruction read |
|
||||
read.getSideEffectOperand() = sink.asOperand() and
|
||||
read.getPrimaryInstruction().(CallInstruction).getStaticCallTarget().hasName("sink")
|
||||
sink.asExpr() = call.getAnArgument()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -49,30 +49,30 @@ void test_element_taint(int x) {
|
||||
sink(v1.back());
|
||||
|
||||
v2[0] = source();
|
||||
sink(v2); // $ ast MISSING: ir
|
||||
sink(v2); // $ ast,ir
|
||||
sink(v2[0]); // $ ast,ir
|
||||
sink(v2[1]); // $ SPURIOUS: ast,ir
|
||||
sink(v2[x]); // $ ast,ir
|
||||
|
||||
v3 = v2;
|
||||
sink(v3); // $ ast MISSING: ir
|
||||
sink(v3); // $ ast,ir
|
||||
sink(v3[0]); // $ ast,ir
|
||||
sink(v3[1]); // $ SPURIOUS: ast,ir
|
||||
sink(v3[x]); // $ ast,ir
|
||||
|
||||
v4[x] = source();
|
||||
sink(v4); // $ ast MISSING: ir
|
||||
sink(v4); // $ ast,ir
|
||||
sink(v4[0]); // $ ast,ir
|
||||
sink(v4[1]); // $ ast,ir
|
||||
sink(v4[x]); // $ ast,ir
|
||||
|
||||
v5.push_back(source());
|
||||
sink(v5); // $ ast MISSING: ir
|
||||
sink(v5); // $ ast,ir
|
||||
sink(v5.front()); // $ SPURIOUS: ast,ir
|
||||
sink(v5.back()); // $ ast,ir
|
||||
|
||||
v6.data()[2] = source();
|
||||
sink(v6); // $ ast MISSING: ir
|
||||
sink(v6); // $ ast,ir
|
||||
sink(v6.data()[2]); // $ ast,ir
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ void test_element_taint(int x) {
|
||||
std::vector<int>::const_iterator it = v7.begin();
|
||||
v7.insert(it, source());
|
||||
}
|
||||
sink(v7); // $ ast MISSING: ir
|
||||
sink(v7); // $ ast,ir
|
||||
sink(v7.front()); // $ ast,ir
|
||||
sink(v7.back()); // $ SPURIOUS: ast,ir
|
||||
|
||||
@@ -94,7 +94,7 @@ void test_element_taint(int x) {
|
||||
sink(v8.back()); // $ MISSING: ast,ir
|
||||
|
||||
v9.at(x) = source();
|
||||
sink(v9); // $ ast MISSING: ir
|
||||
sink(v9); // $ ast,ir
|
||||
sink(v9.at(0)); // $ ast,ir
|
||||
sink(v9.at(1)); // $ ast,ir
|
||||
sink(v9.at(x)); // $ ast,ir
|
||||
@@ -106,18 +106,18 @@ void test_vector_swap() {
|
||||
v1.push_back(source());
|
||||
v4.push_back(source());
|
||||
|
||||
sink(v1); // $ ast MISSING: ir
|
||||
sink(v1); // $ ast,ir
|
||||
sink(v2);
|
||||
sink(v3);
|
||||
sink(v4); // $ ast MISSING: ir
|
||||
sink(v4); // $ ast,ir
|
||||
|
||||
v1.swap(v2);
|
||||
v3.swap(v4);
|
||||
|
||||
sink(v1); // $ SPURIOUS: ast
|
||||
sink(v2); // $ ast MISSING: ir
|
||||
sink(v3); // $ ast MISSING: ir
|
||||
sink(v4); // $ SPURIOUS: ast
|
||||
sink(v1); // $ SPURIOUS: ast,ir
|
||||
sink(v2); // $ ast,ir
|
||||
sink(v3); // $ ast,ir
|
||||
sink(v4); // $ SPURIOUS: ast,ir
|
||||
}
|
||||
|
||||
void test_vector_clear() {
|
||||
@@ -127,18 +127,18 @@ void test_vector_clear() {
|
||||
v2.push_back(source());
|
||||
v3.push_back(source());
|
||||
|
||||
sink(v1); // $ ast MISSING: ir
|
||||
sink(v2); // $ ast MISSING: ir
|
||||
sink(v3); // $ ast MISSING: ir
|
||||
sink(v1); // $ ast,ir
|
||||
sink(v2); // $ ast,ir
|
||||
sink(v3); // $ ast,ir
|
||||
sink(v4);
|
||||
|
||||
v1.clear();
|
||||
v2 = v2;
|
||||
v3 = v4;
|
||||
|
||||
sink(v1); // $ SPURIOUS: ast
|
||||
sink(v2); // $ ast MISSING: ir
|
||||
sink(v3); // $ ast MISSING: ir
|
||||
sink(v1); // $ SPURIOUS: ast,ir
|
||||
sink(v2); // $ ast,ir
|
||||
sink(v3); // $ ast,ir
|
||||
sink(v4);
|
||||
}
|
||||
|
||||
@@ -239,8 +239,8 @@ void test_vector_assign() {
|
||||
v3.push_back(source());
|
||||
|
||||
sink(v1);
|
||||
sink(v2); // $ ast MISSING: ir
|
||||
sink(v3); // $ ast MISSING: ir
|
||||
sink(v2); // $ ast,ir
|
||||
sink(v3); // $ ast,ir
|
||||
|
||||
{
|
||||
std::vector<int> v4, v5, v6;
|
||||
@@ -255,10 +255,10 @@ void test_vector_assign() {
|
||||
v6.assign(i1, i2);
|
||||
|
||||
sink(v4);
|
||||
sink(v5); // $ ast MISSING: ir
|
||||
sink(i1); // $ ast MISSING: ir
|
||||
sink(i2); // $ ast MISSING: ir
|
||||
sink(v6); // $ ast MISSING: ir
|
||||
sink(v5); // $ ast,ir
|
||||
sink(i1); // $ ast,ir
|
||||
sink(i2); // $ ast,ir
|
||||
sink(v6); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -270,9 +270,9 @@ void test_vector_assign() {
|
||||
v8.assign(100, ns_myFloat::source());
|
||||
v9.assign(100, ns_ci_ptr::source());
|
||||
|
||||
sink(v7); // $ ast MISSING: ir
|
||||
sink(v8); // $ ast MISSING: ir
|
||||
sink(v9); // $ ast MISSING: ir
|
||||
sink(v7); // $ ast,ir
|
||||
sink(v8); // $ ast,ir
|
||||
sink(v9); // $ ast,ir
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,12 +282,12 @@ void test_data_more() {
|
||||
std::vector<int> v1, v2;
|
||||
|
||||
v1.push_back(source());
|
||||
sink(v1); // $ ast MISSING: ir
|
||||
sink(v1); // $ ast,ir
|
||||
sink(v1.data()); // $ ast,ir
|
||||
sink(v1.data()[2]); // $ ast,ir
|
||||
|
||||
*(v2.data()) = ns_int::source();
|
||||
sink(v2); // $ ast MISSING: ir
|
||||
sink(v2); // $ ast,ir
|
||||
sink(v2.data()); // $ ast,ir
|
||||
sink(v2.data()[2]); // $ ast,ir
|
||||
}
|
||||
@@ -306,10 +306,10 @@ void test_vector_insert() {
|
||||
sink(a);
|
||||
|
||||
sink(c.insert(c.end(), d.begin(), d.end())); // $ ast,ir
|
||||
sink(c); // $ ast MISSING: ir
|
||||
sink(c); // $ ast,ir
|
||||
|
||||
sink(d.insert(d.end(), a.begin(), a.end())); // $ ast,ir
|
||||
sink(d); // $ ast MISSING: ir
|
||||
sink(d); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_vector_constructors_more() {
|
||||
@@ -321,9 +321,9 @@ void test_vector_constructors_more() {
|
||||
std::vector<int> v4(v2.begin(), v2.end());
|
||||
|
||||
sink(v1);
|
||||
sink(v2); // $ ast MISSING: ir
|
||||
sink(v2); // $ ast,ir
|
||||
sink(v3);
|
||||
sink(v4); // $ ast MISSING: ir
|
||||
sink(v4); // $ ast,ir
|
||||
}
|
||||
|
||||
void taint_vector_output_iterator(std::vector<int>::iterator iter) {
|
||||
@@ -470,7 +470,7 @@ void test_vector_memcpy()
|
||||
|
||||
sink(v);
|
||||
memcpy(&v[i], &s, sizeof(int));
|
||||
sink(v); // $ ast MISSING: ir
|
||||
sink(v); // $ ast,ir
|
||||
}
|
||||
|
||||
{
|
||||
@@ -479,11 +479,11 @@ void test_vector_memcpy()
|
||||
const size_t offs = 10;
|
||||
const size_t len = src.length();
|
||||
|
||||
sink(src); // $ ast MISSING: ir
|
||||
sink(src); // $ ast,ir
|
||||
sink(cs);
|
||||
memcpy(&cs[offs + 1], src.c_str(), len);
|
||||
sink(src); // $ ast MISSING: ir
|
||||
sink(cs); // $ ast MISSING: ir
|
||||
sink(src); // $ ast,ir
|
||||
sink(cs); // $ ast,ir
|
||||
}
|
||||
}
|
||||
|
||||
@@ -491,10 +491,10 @@ void test_vector_emplace() {
|
||||
std::vector<int> v1(10), v2(10);
|
||||
|
||||
v1.emplace_back(source());
|
||||
sink(v1); // $ ast MISSING: ir
|
||||
sink(v1); // $ ast,ir
|
||||
|
||||
v2.emplace(v2.begin(), source());
|
||||
sink(v2); // $ ast MISSING: ir
|
||||
sink(v2); // $ ast,ir
|
||||
}
|
||||
|
||||
void test_vector_iterator() {
|
||||
|
||||
Reference in New Issue
Block a user