Skip to content

Commit c63f7cb

Browse files
committed
C++: Taint through emplace from qualifier to return value.
1 parent 270517d commit c63f7cb

File tree

5 files changed

+38
-1
lines changed

5 files changed

+38
-1
lines changed

cpp/ql/src/semmle/code/cpp/models/implementations/StdMap.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ class StdMapEmplace extends TaintFunction {
6969
output.isQualifierObject() or
7070
output.isReturnValue()
7171
)
72+
or
73+
input.isQualifierObject() and
74+
output.isReturnValue()
7275
}
7376
}
7477

@@ -93,6 +96,9 @@ class StdMapTryEmplace extends TaintFunction {
9396
output.isQualifierObject() or
9497
output.isReturnValue()
9598
)
99+
or
100+
input.isQualifierObject() and
101+
output.isReturnValue()
96102
}
97103
}
98104

cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1107,6 +1107,7 @@
11071107
| map.cpp:232:32:232:34 | call to map | map.cpp:239:24:239:26 | m25 | |
11081108
| map.cpp:232:32:232:34 | call to map | map.cpp:240:7:240:9 | m25 | |
11091109
| map.cpp:232:32:232:34 | call to map | map.cpp:252:1:252:1 | m25 | |
1110+
| map.cpp:233:7:233:9 | m24 | map.cpp:233:11:233:17 | call to emplace | TAINT |
11101111
| map.cpp:233:7:233:9 | ref arg m24 | map.cpp:234:7:234:9 | m24 | |
11111112
| map.cpp:233:7:233:9 | ref arg m24 | map.cpp:235:7:235:9 | m24 | |
11121113
| map.cpp:233:7:233:9 | ref arg m24 | map.cpp:236:7:236:9 | m24 | |
@@ -1115,12 +1116,14 @@
11151116
| map.cpp:233:26:233:30 | def | map.cpp:233:11:233:17 | call to emplace | TAINT |
11161117
| map.cpp:233:33:233:37 | first | map.cpp:233:7:233:37 | call to iterator | |
11171118
| map.cpp:234:7:234:9 | m24 | map.cpp:234:7:234:9 | call to map | |
1119+
| map.cpp:235:7:235:9 | m24 | map.cpp:235:11:235:17 | call to emplace | TAINT |
11181120
| map.cpp:235:7:235:9 | ref arg m24 | map.cpp:236:7:236:9 | m24 | |
11191121
| map.cpp:235:7:235:9 | ref arg m24 | map.cpp:252:1:252:1 | m24 | |
11201122
| map.cpp:235:26:235:31 | call to source | map.cpp:235:7:235:9 | ref arg m24 | TAINT |
11211123
| map.cpp:235:26:235:31 | call to source | map.cpp:235:11:235:17 | call to emplace | TAINT |
11221124
| map.cpp:235:36:235:40 | first | map.cpp:235:7:235:40 | call to iterator | |
11231125
| map.cpp:236:7:236:9 | m24 | map.cpp:236:7:236:9 | call to map | |
1126+
| map.cpp:237:7:237:9 | m25 | map.cpp:237:11:237:22 | call to emplace_hint | TAINT |
11241127
| map.cpp:237:7:237:9 | ref arg m25 | map.cpp:238:7:238:9 | m25 | |
11251128
| map.cpp:237:7:237:9 | ref arg m25 | map.cpp:239:7:239:9 | m25 | |
11261129
| map.cpp:237:7:237:9 | ref arg m25 | map.cpp:239:24:239:26 | m25 | |
@@ -1137,6 +1140,7 @@
11371140
| map.cpp:237:44:237:48 | def | map.cpp:237:7:237:9 | ref arg m25 | TAINT |
11381141
| map.cpp:237:44:237:48 | def | map.cpp:237:11:237:22 | call to emplace_hint | TAINT |
11391142
| map.cpp:238:7:238:9 | m25 | map.cpp:238:7:238:9 | call to map | |
1143+
| map.cpp:239:7:239:9 | m25 | map.cpp:239:11:239:22 | call to emplace_hint | TAINT |
11401144
| map.cpp:239:7:239:9 | ref arg m25 | map.cpp:240:7:240:9 | m25 | |
11411145
| map.cpp:239:7:239:9 | ref arg m25 | map.cpp:252:1:252:1 | m25 | |
11421146
| map.cpp:239:24:239:26 | m25 | map.cpp:239:28:239:32 | call to begin | TAINT |
@@ -1159,6 +1163,7 @@
11591163
| map.cpp:243:32:243:34 | call to map | map.cpp:250:23:250:25 | m27 | |
11601164
| map.cpp:243:32:243:34 | call to map | map.cpp:251:7:251:9 | m27 | |
11611165
| map.cpp:243:32:243:34 | call to map | map.cpp:252:1:252:1 | m27 | |
1166+
| map.cpp:244:7:244:9 | m26 | map.cpp:244:11:244:21 | call to try_emplace | TAINT |
11621167
| map.cpp:244:7:244:9 | ref arg m26 | map.cpp:245:7:245:9 | m26 | |
11631168
| map.cpp:244:7:244:9 | ref arg m26 | map.cpp:246:7:246:9 | m26 | |
11641169
| map.cpp:244:7:244:9 | ref arg m26 | map.cpp:247:7:247:9 | m26 | |
@@ -1167,12 +1172,14 @@
11671172
| map.cpp:244:30:244:34 | def | map.cpp:244:11:244:21 | call to try_emplace | TAINT |
11681173
| map.cpp:244:37:244:41 | first | map.cpp:244:7:244:41 | call to iterator | |
11691174
| map.cpp:245:7:245:9 | m26 | map.cpp:245:7:245:9 | call to map | |
1175+
| map.cpp:246:7:246:9 | m26 | map.cpp:246:11:246:21 | call to try_emplace | TAINT |
11701176
| map.cpp:246:7:246:9 | ref arg m26 | map.cpp:247:7:247:9 | m26 | |
11711177
| map.cpp:246:7:246:9 | ref arg m26 | map.cpp:252:1:252:1 | m26 | |
11721178
| map.cpp:246:30:246:35 | call to source | map.cpp:246:7:246:9 | ref arg m26 | TAINT |
11731179
| map.cpp:246:30:246:35 | call to source | map.cpp:246:11:246:21 | call to try_emplace | TAINT |
11741180
| map.cpp:246:40:246:44 | first | map.cpp:246:7:246:44 | call to iterator | |
11751181
| map.cpp:247:7:247:9 | m26 | map.cpp:247:7:247:9 | call to map | |
1182+
| map.cpp:248:7:248:9 | m27 | map.cpp:248:11:248:21 | call to try_emplace | TAINT |
11761183
| map.cpp:248:7:248:9 | ref arg m27 | map.cpp:249:7:249:9 | m27 | |
11771184
| map.cpp:248:7:248:9 | ref arg m27 | map.cpp:250:7:250:9 | m27 | |
11781185
| map.cpp:248:7:248:9 | ref arg m27 | map.cpp:250:23:250:25 | m27 | |
@@ -1189,6 +1196,7 @@
11891196
| map.cpp:248:43:248:47 | def | map.cpp:248:7:248:9 | ref arg m27 | TAINT |
11901197
| map.cpp:248:43:248:47 | def | map.cpp:248:11:248:21 | call to try_emplace | TAINT |
11911198
| map.cpp:249:7:249:9 | m27 | map.cpp:249:7:249:9 | call to map | |
1199+
| map.cpp:250:7:250:9 | m27 | map.cpp:250:11:250:21 | call to try_emplace | TAINT |
11921200
| map.cpp:250:7:250:9 | ref arg m27 | map.cpp:251:7:251:9 | m27 | |
11931201
| map.cpp:250:7:250:9 | ref arg m27 | map.cpp:252:1:252:1 | m27 | |
11941202
| map.cpp:250:23:250:25 | m27 | map.cpp:250:27:250:31 | call to begin | TAINT |
@@ -1739,6 +1747,7 @@
17391747
| map.cpp:381:42:381:44 | call to unordered_map | map.cpp:388:24:388:26 | m25 | |
17401748
| map.cpp:381:42:381:44 | call to unordered_map | map.cpp:389:7:389:9 | m25 | |
17411749
| map.cpp:381:42:381:44 | call to unordered_map | map.cpp:438:1:438:1 | m25 | |
1750+
| map.cpp:382:7:382:9 | m24 | map.cpp:382:11:382:17 | call to emplace | TAINT |
17421751
| map.cpp:382:7:382:9 | ref arg m24 | map.cpp:383:7:383:9 | m24 | |
17431752
| map.cpp:382:7:382:9 | ref arg m24 | map.cpp:384:7:384:9 | m24 | |
17441753
| map.cpp:382:7:382:9 | ref arg m24 | map.cpp:385:7:385:9 | m24 | |
@@ -1747,12 +1756,14 @@
17471756
| map.cpp:382:26:382:30 | def | map.cpp:382:11:382:17 | call to emplace | TAINT |
17481757
| map.cpp:382:33:382:37 | first | map.cpp:382:7:382:37 | call to iterator | |
17491758
| map.cpp:383:7:383:9 | m24 | map.cpp:383:7:383:9 | call to unordered_map | |
1759+
| map.cpp:384:7:384:9 | m24 | map.cpp:384:11:384:17 | call to emplace | TAINT |
17501760
| map.cpp:384:7:384:9 | ref arg m24 | map.cpp:385:7:385:9 | m24 | |
17511761
| map.cpp:384:7:384:9 | ref arg m24 | map.cpp:438:1:438:1 | m24 | |
17521762
| map.cpp:384:26:384:31 | call to source | map.cpp:384:7:384:9 | ref arg m24 | TAINT |
17531763
| map.cpp:384:26:384:31 | call to source | map.cpp:384:11:384:17 | call to emplace | TAINT |
17541764
| map.cpp:384:36:384:40 | first | map.cpp:384:7:384:40 | call to iterator | |
17551765
| map.cpp:385:7:385:9 | m24 | map.cpp:385:7:385:9 | call to unordered_map | |
1766+
| map.cpp:386:7:386:9 | m25 | map.cpp:386:11:386:22 | call to emplace_hint | TAINT |
17561767
| map.cpp:386:7:386:9 | ref arg m25 | map.cpp:387:7:387:9 | m25 | |
17571768
| map.cpp:386:7:386:9 | ref arg m25 | map.cpp:388:7:388:9 | m25 | |
17581769
| map.cpp:386:7:386:9 | ref arg m25 | map.cpp:388:24:388:26 | m25 | |
@@ -1769,6 +1780,7 @@
17691780
| map.cpp:386:44:386:48 | def | map.cpp:386:7:386:9 | ref arg m25 | TAINT |
17701781
| map.cpp:386:44:386:48 | def | map.cpp:386:11:386:22 | call to emplace_hint | TAINT |
17711782
| map.cpp:387:7:387:9 | m25 | map.cpp:387:7:387:9 | call to unordered_map | |
1783+
| map.cpp:388:7:388:9 | m25 | map.cpp:388:11:388:22 | call to emplace_hint | TAINT |
17721784
| map.cpp:388:7:388:9 | ref arg m25 | map.cpp:389:7:389:9 | m25 | |
17731785
| map.cpp:388:7:388:9 | ref arg m25 | map.cpp:438:1:438:1 | m25 | |
17741786
| map.cpp:388:24:388:26 | m25 | map.cpp:388:28:388:32 | call to begin | TAINT |
@@ -1800,6 +1812,7 @@
18001812
| map.cpp:392:47:392:49 | call to unordered_map | map.cpp:405:23:405:25 | m28 | |
18011813
| map.cpp:392:47:392:49 | call to unordered_map | map.cpp:406:7:406:9 | m28 | |
18021814
| map.cpp:392:47:392:49 | call to unordered_map | map.cpp:438:1:438:1 | m28 | |
1815+
| map.cpp:393:7:393:9 | m26 | map.cpp:393:11:393:21 | call to try_emplace | TAINT |
18031816
| map.cpp:393:7:393:9 | ref arg m26 | map.cpp:394:7:394:9 | m26 | |
18041817
| map.cpp:393:7:393:9 | ref arg m26 | map.cpp:395:7:395:9 | m26 | |
18051818
| map.cpp:393:7:393:9 | ref arg m26 | map.cpp:396:7:396:9 | m26 | |
@@ -1809,6 +1822,7 @@
18091822
| map.cpp:393:30:393:34 | def | map.cpp:393:7:393:9 | ref arg m26 | TAINT |
18101823
| map.cpp:393:30:393:34 | def | map.cpp:393:11:393:21 | call to try_emplace | TAINT |
18111824
| map.cpp:393:37:393:41 | first | map.cpp:393:7:393:41 | call to iterator | |
1825+
| map.cpp:394:7:394:9 | m26 | map.cpp:394:11:394:21 | call to try_emplace | TAINT |
18121826
| map.cpp:394:7:394:9 | ref arg m26 | map.cpp:395:7:395:9 | m26 | |
18131827
| map.cpp:394:7:394:9 | ref arg m26 | map.cpp:396:7:396:9 | m26 | |
18141828
| map.cpp:394:7:394:9 | ref arg m26 | map.cpp:397:7:397:9 | m26 | |
@@ -1817,17 +1831,20 @@
18171831
| map.cpp:394:30:394:34 | def | map.cpp:394:7:394:9 | ref arg m26 | TAINT |
18181832
| map.cpp:394:30:394:34 | def | map.cpp:394:11:394:21 | call to try_emplace | TAINT |
18191833
| map.cpp:395:7:395:9 | m26 | map.cpp:395:7:395:9 | call to unordered_map | |
1834+
| map.cpp:396:7:396:9 | m26 | map.cpp:396:11:396:21 | call to try_emplace | TAINT |
18201835
| map.cpp:396:7:396:9 | ref arg m26 | map.cpp:397:7:397:9 | m26 | |
18211836
| map.cpp:396:7:396:9 | ref arg m26 | map.cpp:398:7:398:9 | m26 | |
18221837
| map.cpp:396:7:396:9 | ref arg m26 | map.cpp:438:1:438:1 | m26 | |
18231838
| map.cpp:396:30:396:35 | call to source | map.cpp:396:7:396:9 | ref arg m26 | TAINT |
18241839
| map.cpp:396:30:396:35 | call to source | map.cpp:396:11:396:21 | call to try_emplace | TAINT |
18251840
| map.cpp:396:40:396:44 | first | map.cpp:396:7:396:44 | call to iterator | |
1841+
| map.cpp:397:7:397:9 | m26 | map.cpp:397:11:397:21 | call to try_emplace | TAINT |
18261842
| map.cpp:397:7:397:9 | ref arg m26 | map.cpp:398:7:398:9 | m26 | |
18271843
| map.cpp:397:7:397:9 | ref arg m26 | map.cpp:438:1:438:1 | m26 | |
18281844
| map.cpp:397:30:397:35 | call to source | map.cpp:397:7:397:9 | ref arg m26 | TAINT |
18291845
| map.cpp:397:30:397:35 | call to source | map.cpp:397:11:397:21 | call to try_emplace | TAINT |
18301846
| map.cpp:398:7:398:9 | m26 | map.cpp:398:7:398:9 | call to unordered_map | |
1847+
| map.cpp:399:7:399:9 | m27 | map.cpp:399:11:399:21 | call to try_emplace | TAINT |
18311848
| map.cpp:399:7:399:9 | ref arg m27 | map.cpp:400:7:400:9 | m27 | |
18321849
| map.cpp:399:7:399:9 | ref arg m27 | map.cpp:401:7:401:9 | m27 | |
18331850
| map.cpp:399:7:399:9 | ref arg m27 | map.cpp:401:23:401:25 | m27 | |
@@ -1844,6 +1861,7 @@
18441861
| map.cpp:399:43:399:47 | def | map.cpp:399:7:399:9 | ref arg m27 | TAINT |
18451862
| map.cpp:399:43:399:47 | def | map.cpp:399:11:399:21 | call to try_emplace | TAINT |
18461863
| map.cpp:400:7:400:9 | m27 | map.cpp:400:7:400:9 | call to unordered_map | |
1864+
| map.cpp:401:7:401:9 | m27 | map.cpp:401:11:401:21 | call to try_emplace | TAINT |
18471865
| map.cpp:401:7:401:9 | ref arg m27 | map.cpp:402:7:402:9 | m27 | |
18481866
| map.cpp:401:7:401:9 | ref arg m27 | map.cpp:438:1:438:1 | m27 | |
18491867
| map.cpp:401:23:401:25 | m27 | map.cpp:401:27:401:31 | call to begin | TAINT |
@@ -1854,6 +1872,7 @@
18541872
| map.cpp:401:43:401:48 | call to source | map.cpp:401:7:401:9 | ref arg m27 | TAINT |
18551873
| map.cpp:401:43:401:48 | call to source | map.cpp:401:11:401:21 | call to try_emplace | TAINT |
18561874
| map.cpp:402:7:402:9 | m27 | map.cpp:402:7:402:9 | call to unordered_map | |
1875+
| map.cpp:403:7:403:9 | m28 | map.cpp:403:11:403:21 | call to try_emplace | TAINT |
18571876
| map.cpp:403:7:403:9 | ref arg m28 | map.cpp:404:7:404:9 | m28 | |
18581877
| map.cpp:403:7:403:9 | ref arg m28 | map.cpp:405:7:405:9 | m28 | |
18591878
| map.cpp:403:7:403:9 | ref arg m28 | map.cpp:405:23:405:25 | m28 | |
@@ -1870,6 +1889,7 @@
18701889
| map.cpp:403:43:403:47 | def | map.cpp:403:7:403:9 | ref arg m28 | TAINT |
18711890
| map.cpp:403:43:403:47 | def | map.cpp:403:11:403:21 | call to try_emplace | TAINT |
18721891
| map.cpp:404:7:404:9 | m28 | map.cpp:404:7:404:9 | call to unordered_map | |
1892+
| map.cpp:405:7:405:9 | m28 | map.cpp:405:11:405:21 | call to try_emplace | TAINT |
18731893
| map.cpp:405:7:405:9 | ref arg m28 | map.cpp:406:7:406:9 | m28 | |
18741894
| map.cpp:405:7:405:9 | ref arg m28 | map.cpp:438:1:438:1 | m28 | |
18751895
| map.cpp:405:23:405:25 | m28 | map.cpp:405:27:405:31 | call to begin | TAINT |
@@ -1896,6 +1916,7 @@
18961916
| map.cpp:409:65:409:67 | call to unordered_map | map.cpp:420:7:420:9 | m32 | |
18971917
| map.cpp:409:65:409:67 | call to unordered_map | map.cpp:421:7:421:9 | m32 | |
18981918
| map.cpp:409:65:409:67 | call to unordered_map | map.cpp:438:1:438:1 | m32 | |
1919+
| map.cpp:410:7:410:9 | m29 | map.cpp:410:11:410:21 | call to try_emplace | TAINT |
18991920
| map.cpp:410:7:410:9 | ref arg m29 | map.cpp:411:7:411:9 | m29 | |
19001921
| map.cpp:410:7:410:9 | ref arg m29 | map.cpp:412:7:412:9 | m29 | |
19011922
| map.cpp:410:7:410:9 | ref arg m29 | map.cpp:438:1:438:1 | m29 | |
@@ -1908,6 +1929,7 @@
19081929
| map.cpp:412:7:412:9 | m29 | map.cpp:412:10:412:10 | call to operator[] | TAINT |
19091930
| map.cpp:412:7:412:9 | ref arg m29 | map.cpp:438:1:438:1 | m29 | |
19101931
| map.cpp:412:10:412:10 | call to operator[] | map.cpp:412:7:412:16 | call to pair | TAINT |
1932+
| map.cpp:413:7:413:9 | m30 | map.cpp:413:11:413:21 | call to try_emplace | TAINT |
19111933
| map.cpp:413:7:413:9 | ref arg m30 | map.cpp:414:7:414:9 | m30 | |
19121934
| map.cpp:413:7:413:9 | ref arg m30 | map.cpp:415:7:415:9 | m30 | |
19131935
| map.cpp:413:7:413:9 | ref arg m30 | map.cpp:438:1:438:1 | m30 | |
@@ -1920,6 +1942,7 @@
19201942
| map.cpp:415:7:415:9 | m30 | map.cpp:415:10:415:10 | call to operator[] | TAINT |
19211943
| map.cpp:415:7:415:9 | ref arg m30 | map.cpp:438:1:438:1 | m30 | |
19221944
| map.cpp:415:10:415:10 | call to operator[] | map.cpp:415:7:415:16 | call to pair | TAINT |
1945+
| map.cpp:416:7:416:9 | m31 | map.cpp:416:11:416:21 | call to try_emplace | TAINT |
19231946
| map.cpp:416:7:416:9 | ref arg m31 | map.cpp:417:7:417:9 | m31 | |
19241947
| map.cpp:416:7:416:9 | ref arg m31 | map.cpp:418:7:418:9 | m31 | |
19251948
| map.cpp:416:7:416:9 | ref arg m31 | map.cpp:438:1:438:1 | m31 | |
@@ -1932,6 +1955,7 @@
19321955
| map.cpp:418:7:418:9 | m31 | map.cpp:418:10:418:10 | call to operator[] | TAINT |
19331956
| map.cpp:418:7:418:9 | ref arg m31 | map.cpp:438:1:438:1 | m31 | |
19341957
| map.cpp:418:10:418:10 | call to operator[] | map.cpp:418:7:418:16 | call to pair | TAINT |
1958+
| map.cpp:419:7:419:9 | m32 | map.cpp:419:11:419:21 | call to try_emplace | TAINT |
19351959
| map.cpp:419:7:419:9 | ref arg m32 | map.cpp:420:7:420:9 | m32 | |
19361960
| map.cpp:419:7:419:9 | ref arg m32 | map.cpp:421:7:421:9 | m32 | |
19371961
| map.cpp:419:7:419:9 | ref arg m32 | map.cpp:438:1:438:1 | m32 | |
@@ -1947,6 +1971,7 @@
19471971
| map.cpp:424:37:424:39 | call to unordered_map | map.cpp:425:7:425:9 | m33 | |
19481972
| map.cpp:424:37:424:39 | call to unordered_map | map.cpp:426:7:426:9 | m33 | |
19491973
| map.cpp:424:37:424:39 | call to unordered_map | map.cpp:438:1:438:1 | m33 | |
1974+
| map.cpp:425:7:425:9 | m33 | map.cpp:425:11:425:17 | call to emplace | TAINT |
19501975
| map.cpp:425:7:425:9 | ref arg m33 | map.cpp:426:7:426:9 | m33 | |
19511976
| map.cpp:425:7:425:9 | ref arg m33 | map.cpp:438:1:438:1 | m33 | |
19521977
| map.cpp:425:29:425:33 | def | map.cpp:425:7:425:9 | ref arg m33 | TAINT |
@@ -1965,6 +1990,7 @@
19651990
| map.cpp:428:42:428:44 | call to unordered_map | map.cpp:436:7:436:9 | m35 | |
19661991
| map.cpp:428:42:428:44 | call to unordered_map | map.cpp:437:7:437:9 | m35 | |
19671992
| map.cpp:428:42:428:44 | call to unordered_map | map.cpp:438:1:438:1 | m35 | |
1993+
| map.cpp:429:7:429:9 | m34 | map.cpp:429:11:429:17 | call to emplace | TAINT |
19681994
| map.cpp:429:7:429:9 | ref arg m34 | map.cpp:430:7:430:9 | m34 | |
19691995
| map.cpp:429:7:429:9 | ref arg m34 | map.cpp:431:7:431:9 | m34 | |
19701996
| map.cpp:429:7:429:9 | ref arg m34 | map.cpp:432:7:432:9 | m34 | |
@@ -1976,6 +2002,7 @@
19762002
| map.cpp:429:52:429:56 | def | map.cpp:429:19:429:57 | call to pair | TAINT |
19772003
| map.cpp:429:60:429:64 | first | map.cpp:429:7:429:64 | call to iterator | |
19782004
| map.cpp:430:7:430:9 | m34 | map.cpp:430:7:430:9 | call to unordered_map | |
2005+
| map.cpp:431:7:431:9 | m34 | map.cpp:431:11:431:17 | call to emplace | TAINT |
19792006
| map.cpp:431:7:431:9 | ref arg m34 | map.cpp:432:7:432:9 | m34 | |
19802007
| map.cpp:431:7:431:9 | ref arg m34 | map.cpp:433:7:433:9 | m34 | |
19812008
| map.cpp:431:7:431:9 | ref arg m34 | map.cpp:433:24:433:26 | m34 | |
@@ -1985,6 +2012,7 @@
19852012
| map.cpp:431:52:431:57 | call to source | map.cpp:431:19:431:60 | call to pair | TAINT |
19862013
| map.cpp:431:63:431:67 | first | map.cpp:431:7:431:67 | call to iterator | |
19872014
| map.cpp:432:7:432:9 | m34 | map.cpp:432:7:432:9 | call to unordered_map | |
2015+
| map.cpp:433:7:433:9 | m34 | map.cpp:433:11:433:22 | call to emplace_hint | TAINT |
19882016
| map.cpp:433:7:433:9 | ref arg m34 | map.cpp:438:1:438:1 | m34 | |
19892017
| map.cpp:433:24:433:26 | m34 | map.cpp:433:28:433:32 | call to begin | TAINT |
19902018
| map.cpp:433:24:433:26 | ref arg m34 | map.cpp:433:7:433:9 | m34 | |
@@ -2000,6 +2028,7 @@
20002028
| map.cpp:434:7:434:9 | ref arg m35 | map.cpp:438:1:438:1 | m35 | |
20012029
| map.cpp:434:21:434:25 | first | map.cpp:434:7:434:25 | call to iterator | |
20022030
| map.cpp:435:7:435:9 | m35 | map.cpp:435:7:435:9 | call to unordered_map | |
2031+
| map.cpp:436:7:436:9 | m35 | map.cpp:436:11:436:17 | call to emplace | TAINT |
20032032
| map.cpp:436:7:436:9 | ref arg m35 | map.cpp:437:7:437:9 | m35 | |
20042033
| map.cpp:436:7:436:9 | ref arg m35 | map.cpp:438:1:438:1 | m35 | |
20052034
| map.cpp:436:19:436:60 | call to pair | map.cpp:436:7:436:9 | ref arg m35 | TAINT |

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ void test_unordered_map()
430430
sink(m34);
431431
sink(m34.emplace(std::pair<char *, char *>("abc", source())).first); // tainted
432432
sink(m34); // tainted
433-
sink(m34.emplace_hint(m34.begin(), "abc", "def")); // tainted [NOT DETECTED]
433+
sink(m34.emplace_hint(m34.begin(), "abc", "def")); // tainted
434434
sink(m35.emplace().first);
435435
sink(m35);
436436
sink(m35.emplace(std::pair<char *, char *>(source(), "def")).first); // tainted [NOT DETECTED]

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@
160160
| map.cpp:420:7:420:9 | call to unordered_map | map.cpp:419:33:419:38 | call to source |
161161
| map.cpp:421:7:421:16 | call to pair | map.cpp:419:33:419:38 | call to source |
162162
| map.cpp:432:7:432:9 | call to unordered_map | map.cpp:431:52:431:57 | call to source |
163+
| map.cpp:433:11:433:22 | call to emplace_hint | map.cpp:431:52:431:57 | call to source |
163164
| movableclass.cpp:44:8:44:9 | s1 | movableclass.cpp:39:21:39:26 | call to source |
164165
| movableclass.cpp:45:8:45:9 | s2 | movableclass.cpp:40:23:40:28 | call to source |
165166
| movableclass.cpp:46:8:46:9 | s3 | movableclass.cpp:42:8:42:13 | call to source |

cpp/ql/test/library-tests/dataflow/taint-tests/test_ir.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
| map.cpp:416:7:416:41 | call to pair | map.cpp:416:30:416:35 | call to source |
127127
| map.cpp:419:7:419:41 | call to pair | map.cpp:419:33:419:38 | call to source |
128128
| map.cpp:431:7:431:67 | call to iterator | map.cpp:431:52:431:57 | call to source |
129+
| map.cpp:433:11:433:22 | call to emplace_hint | map.cpp:431:52:431:57 | call to source |
129130
| movableclass.cpp:44:8:44:9 | s1 | movableclass.cpp:39:21:39:26 | call to source |
130131
| movableclass.cpp:45:8:45:9 | s2 | movableclass.cpp:40:23:40:28 | call to source |
131132
| movableclass.cpp:46:8:46:9 | s3 | movableclass.cpp:42:8:42:13 | call to source |

0 commit comments

Comments
 (0)