Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 469bdae

Browse files
committed
C++: More helpful toString for def. by ref. node
1 parent 36da2d1 commit 469bdae

2 files changed

Lines changed: 23 additions & 15 deletions

File tree

cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,14 @@ class DefinitionByReferenceNode extends InstructionNode {
239239
Parameter getParameter() {
240240
exists(CallInstruction ci | result = ci.getStaticCallTarget().getParameter(instr.getIndex()))
241241
}
242+
243+
override string toString() {
244+
// This string should be unique enough to be helpful but common enough to
245+
// avoid storing too many different strings.
246+
result =
247+
instr.getPrimaryInstruction().(CallInstruction).getStaticCallTarget().getName() +
248+
" output argument"
249+
}
242250
}
243251

244252
/**

cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/funcs/funcsLocal.expected

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
edges
2-
| funcsLocal.c:16:8:16:9 | BufferMayWriteSideEffect | funcsLocal.c:17:9:17:10 | (const char *)... |
3-
| funcsLocal.c:16:8:16:9 | BufferMayWriteSideEffect | funcsLocal.c:17:9:17:10 | i1 |
2+
| funcsLocal.c:16:8:16:9 | fread output argument | funcsLocal.c:17:9:17:10 | (const char *)... |
3+
| funcsLocal.c:16:8:16:9 | fread output argument | funcsLocal.c:17:9:17:10 | i1 |
44
| funcsLocal.c:16:8:16:9 | i1 | funcsLocal.c:17:9:17:10 | (const char *)... |
55
| funcsLocal.c:16:8:16:9 | i1 | funcsLocal.c:17:9:17:10 | i1 |
6-
| funcsLocal.c:26:8:26:9 | BufferMustWriteSideEffect | funcsLocal.c:27:9:27:10 | (const char *)... |
7-
| funcsLocal.c:26:8:26:9 | BufferMustWriteSideEffect | funcsLocal.c:27:9:27:10 | i3 |
6+
| funcsLocal.c:26:8:26:9 | fgets output argument | funcsLocal.c:27:9:27:10 | (const char *)... |
7+
| funcsLocal.c:26:8:26:9 | fgets output argument | funcsLocal.c:27:9:27:10 | i3 |
88
| funcsLocal.c:26:8:26:9 | i3 | funcsLocal.c:27:9:27:10 | (const char *)... |
99
| funcsLocal.c:26:8:26:9 | i3 | funcsLocal.c:27:9:27:10 | i3 |
1010
| funcsLocal.c:31:13:31:17 | call to fgets | funcsLocal.c:32:9:32:10 | (const char *)... |
@@ -13,12 +13,12 @@ edges
1313
| funcsLocal.c:31:13:31:17 | call to fgets | funcsLocal.c:32:9:32:10 | i4 |
1414
| funcsLocal.c:31:13:31:17 | call to fgets | funcsLocal.c:32:9:32:10 | i4 |
1515
| funcsLocal.c:31:13:31:17 | call to fgets | funcsLocal.c:32:9:32:10 | i4 |
16-
| funcsLocal.c:31:19:31:21 | BufferMustWriteSideEffect | funcsLocal.c:32:9:32:10 | (const char *)... |
17-
| funcsLocal.c:31:19:31:21 | BufferMustWriteSideEffect | funcsLocal.c:32:9:32:10 | i4 |
16+
| funcsLocal.c:31:19:31:21 | fgets output argument | funcsLocal.c:32:9:32:10 | (const char *)... |
17+
| funcsLocal.c:31:19:31:21 | fgets output argument | funcsLocal.c:32:9:32:10 | i4 |
1818
| funcsLocal.c:31:19:31:21 | i41 | funcsLocal.c:32:9:32:10 | (const char *)... |
1919
| funcsLocal.c:31:19:31:21 | i41 | funcsLocal.c:32:9:32:10 | i4 |
20-
| funcsLocal.c:36:7:36:8 | BufferMustWriteSideEffect | funcsLocal.c:37:9:37:10 | (const char *)... |
21-
| funcsLocal.c:36:7:36:8 | BufferMustWriteSideEffect | funcsLocal.c:37:9:37:10 | i5 |
20+
| funcsLocal.c:36:7:36:8 | gets output argument | funcsLocal.c:37:9:37:10 | (const char *)... |
21+
| funcsLocal.c:36:7:36:8 | gets output argument | funcsLocal.c:37:9:37:10 | i5 |
2222
| funcsLocal.c:36:7:36:8 | i5 | funcsLocal.c:37:9:37:10 | (const char *)... |
2323
| funcsLocal.c:36:7:36:8 | i5 | funcsLocal.c:37:9:37:10 | i5 |
2424
| funcsLocal.c:41:13:41:16 | call to gets | funcsLocal.c:42:9:42:10 | (const char *)... |
@@ -27,38 +27,38 @@ edges
2727
| funcsLocal.c:41:13:41:16 | call to gets | funcsLocal.c:42:9:42:10 | i6 |
2828
| funcsLocal.c:41:13:41:16 | call to gets | funcsLocal.c:42:9:42:10 | i6 |
2929
| funcsLocal.c:41:13:41:16 | call to gets | funcsLocal.c:42:9:42:10 | i6 |
30-
| funcsLocal.c:41:18:41:20 | BufferMustWriteSideEffect | funcsLocal.c:42:9:42:10 | (const char *)... |
31-
| funcsLocal.c:41:18:41:20 | BufferMustWriteSideEffect | funcsLocal.c:42:9:42:10 | i6 |
30+
| funcsLocal.c:41:18:41:20 | gets output argument | funcsLocal.c:42:9:42:10 | (const char *)... |
31+
| funcsLocal.c:41:18:41:20 | gets output argument | funcsLocal.c:42:9:42:10 | i6 |
3232
| funcsLocal.c:41:18:41:20 | i61 | funcsLocal.c:42:9:42:10 | (const char *)... |
3333
| funcsLocal.c:41:18:41:20 | i61 | funcsLocal.c:42:9:42:10 | i6 |
3434
nodes
35-
| funcsLocal.c:16:8:16:9 | BufferMayWriteSideEffect | semmle.label | BufferMayWriteSideEffect |
35+
| funcsLocal.c:16:8:16:9 | fread output argument | semmle.label | fread output argument |
3636
| funcsLocal.c:16:8:16:9 | i1 | semmle.label | i1 |
3737
| funcsLocal.c:17:9:17:10 | (const char *)... | semmle.label | (const char *)... |
3838
| funcsLocal.c:17:9:17:10 | (const char *)... | semmle.label | (const char *)... |
3939
| funcsLocal.c:17:9:17:10 | i1 | semmle.label | i1 |
40-
| funcsLocal.c:26:8:26:9 | BufferMustWriteSideEffect | semmle.label | BufferMustWriteSideEffect |
40+
| funcsLocal.c:26:8:26:9 | fgets output argument | semmle.label | fgets output argument |
4141
| funcsLocal.c:26:8:26:9 | i3 | semmle.label | i3 |
4242
| funcsLocal.c:27:9:27:10 | (const char *)... | semmle.label | (const char *)... |
4343
| funcsLocal.c:27:9:27:10 | (const char *)... | semmle.label | (const char *)... |
4444
| funcsLocal.c:27:9:27:10 | i3 | semmle.label | i3 |
4545
| funcsLocal.c:31:13:31:17 | call to fgets | semmle.label | call to fgets |
4646
| funcsLocal.c:31:13:31:17 | call to fgets | semmle.label | call to fgets |
47-
| funcsLocal.c:31:19:31:21 | BufferMustWriteSideEffect | semmle.label | BufferMustWriteSideEffect |
47+
| funcsLocal.c:31:19:31:21 | fgets output argument | semmle.label | fgets output argument |
4848
| funcsLocal.c:31:19:31:21 | i41 | semmle.label | i41 |
4949
| funcsLocal.c:32:9:32:10 | (const char *)... | semmle.label | (const char *)... |
5050
| funcsLocal.c:32:9:32:10 | (const char *)... | semmle.label | (const char *)... |
5151
| funcsLocal.c:32:9:32:10 | i4 | semmle.label | i4 |
5252
| funcsLocal.c:32:9:32:10 | i4 | semmle.label | i4 |
5353
| funcsLocal.c:32:9:32:10 | i4 | semmle.label | i4 |
54-
| funcsLocal.c:36:7:36:8 | BufferMustWriteSideEffect | semmle.label | BufferMustWriteSideEffect |
54+
| funcsLocal.c:36:7:36:8 | gets output argument | semmle.label | gets output argument |
5555
| funcsLocal.c:36:7:36:8 | i5 | semmle.label | i5 |
5656
| funcsLocal.c:37:9:37:10 | (const char *)... | semmle.label | (const char *)... |
5757
| funcsLocal.c:37:9:37:10 | (const char *)... | semmle.label | (const char *)... |
5858
| funcsLocal.c:37:9:37:10 | i5 | semmle.label | i5 |
5959
| funcsLocal.c:41:13:41:16 | call to gets | semmle.label | call to gets |
6060
| funcsLocal.c:41:13:41:16 | call to gets | semmle.label | call to gets |
61-
| funcsLocal.c:41:18:41:20 | BufferMustWriteSideEffect | semmle.label | BufferMustWriteSideEffect |
61+
| funcsLocal.c:41:18:41:20 | gets output argument | semmle.label | gets output argument |
6262
| funcsLocal.c:41:18:41:20 | i61 | semmle.label | i61 |
6363
| funcsLocal.c:42:9:42:10 | (const char *)... | semmle.label | (const char *)... |
6464
| funcsLocal.c:42:9:42:10 | (const char *)... | semmle.label | (const char *)... |

0 commit comments

Comments
 (0)