Skip to content

Commit 9559357

Browse files
committed
fix(cpp): model bdlbb::BlobBuffer::buffer and trim model comments
Address review feedback on the bdlbb::Blob models: - Add a summary for BlobBuffer::buffer(), which returns the bsl::shared_ptr<char> that owns the bytes. No shared_ptr rows are needed: SmartPointer.qll already covers bsl::shared_ptr::get(). - Add a harness case that reads through blob.buffer(0).buffer().get(). - Shorten the section comments in bdlbb.model.yml and the change note.
1 parent 8701ce9 commit 9559357

5 files changed

Lines changed: 111 additions & 79 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
---
22
category: minorAnalysis
33
---
4-
* Added flow summaries for the BDE `bdlbb::Blob` segmented byte buffer (`BloombergLP::bdlbb`). Taint now flows from a blob to its bytes through the `Blob::buffer`/`BlobBuffer::data` accessor chain and through the `bdlbb::BlobUtil::copy` and `getContiguousRangeOrCopy` helpers, so a blob populated from untrusted input (for example a BlazingMQ message body read via `bmqa::Message::getData`) is tracked into the payload bytes.
4+
* Added flow summaries for the BDE `BloombergLP::bdlbb::Blob` segmented byte buffer.

cpp/ql/lib/ext/bdlbb.model.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@ extensions:
55
pack: codeql/cpp-all
66
extensible: summaryModel
77
data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance
8-
# Accessor chain: a tainted blob taints its buffers, and a tainted buffer taints its bytes.
8+
# Accessor chain
99
- ["BloombergLP::bdlbb", "Blob", true, "buffer", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
1010
- ["BloombergLP::bdlbb", "BlobBuffer", true, "data", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
11-
# BlobUtil read-out: the source blob (Argument[*1]) taints the destination buffer (and the
12-
# returned contiguous range).
11+
- ["BloombergLP::bdlbb", "BlobBuffer", true, "buffer", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
12+
# BlobUtil read-out
1313
- ["BloombergLP::bdlbb", "BlobUtil", true, "copy", "(char *,const Blob &,int,int)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"]
1414
- ["BloombergLP::bdlbb", "BlobUtil", true, "getContiguousRangeOrCopy", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"]
1515
- ["BloombergLP::bdlbb", "BlobUtil", true, "getContiguousRangeOrCopy", "", "", "Argument[*1]", "ReturnValue[*]", "taint", "manual"]
16-
# BlobUtil write-in: the source (Argument[*2]) taints the destination blob. `copy` has two
17-
# write-in overloads, one taking a raw byte buffer and one taking another blob as the source;
18-
# each row pins the exact signature so the int offset/length arguments are never tainted.
16+
# BlobUtil write-in
1917
- ["BloombergLP::bdlbb", "BlobUtil", true, "copy", "(Blob *,int,const char *,int)", "", "Argument[*2]", "Argument[*0]", "taint", "manual"]
2018
- ["BloombergLP::bdlbb", "BlobUtil", true, "copy", "(Blob *,int,const Blob &,int,int)", "", "Argument[*2]", "Argument[*0]", "taint", "manual"]

cpp/ql/test/library-tests/dataflow/external-models/bdlbb.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,19 @@ namespace bsl {
1313
size_t size() const;
1414
};
1515
typedef basic_string<char> string;
16+
template <class T> class shared_ptr {
17+
public:
18+
T *get() const;
19+
};
1620
}
1721

1822
namespace BloombergLP {
1923
namespace bdlbb {
2024
class BlobBuffer {
2125
public:
2226
char *data() const;
27+
bsl::shared_ptr<char> &buffer();
28+
const bsl::shared_ptr<char> &buffer() const;
2329
};
2430

2531
class Blob {
@@ -61,6 +67,15 @@ void test_accessor_chain() {
6167
sink(*p); // $ ir
6268
}
6369

70+
// The get() step comes from the built-in smart pointer model, not from bdlbb.model.yml.
71+
void test_accessor_chain_shared_ptr() {
72+
bsl::string s(source());
73+
BloombergLP::bdlbb::Blob blob;
74+
BloombergLP::bdlbb::BlobUtil::copy(&blob, 0, s.data(), s.size());
75+
const char *p = blob.buffer(0).buffer().get();
76+
sink(*p); // $ ir
77+
}
78+
6479
void test_getContiguousRangeOrCopy() {
6580
bsl::string s(source());
6681
BloombergLP::bdlbb::Blob blob;

cpp/ql/test/library-tests/dataflow/external-models/flow.expected

Lines changed: 77 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,13 @@ models
9696
| 95 | Summary: Azure::Core::IO; BodyStream; true; ReadToEnd; ; ; Argument[-1]; ReturnValue.Element; taint; manual |
9797
| 96 | Summary: Azure; Nullable; true; Value; ; ; Argument[-1]; ReturnValue[*]; taint; manual |
9898
| 97 | Summary: BloombergLP::bdlbb; Blob; true; buffer; ; ; Argument[-1]; ReturnValue[*]; taint; manual |
99-
| 98 | Summary: BloombergLP::bdlbb; BlobBuffer; true; data; ; ; Argument[-1]; ReturnValue[*]; taint; manual |
100-
| 99 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const Blob &,int,int); ; Argument[*2]; Argument[*0]; taint; manual |
101-
| 100 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const char *,int); ; Argument[*2]; Argument[*0]; taint; manual |
102-
| 101 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (char *,const Blob &,int,int); ; Argument[*1]; Argument[*0]; taint; manual |
103-
| 102 | Summary: BloombergLP::bdlbb; BlobUtil; true; getContiguousRangeOrCopy; ; ; Argument[*1]; ReturnValue[*]; taint; manual |
104-
| 103 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual |
99+
| 98 | Summary: BloombergLP::bdlbb; BlobBuffer; true; buffer; ; ; Argument[-1]; ReturnValue[*]; taint; manual |
100+
| 99 | Summary: BloombergLP::bdlbb; BlobBuffer; true; data; ; ; Argument[-1]; ReturnValue[*]; taint; manual |
101+
| 100 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const Blob &,int,int); ; Argument[*2]; Argument[*0]; taint; manual |
102+
| 101 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const char *,int); ; Argument[*2]; Argument[*0]; taint; manual |
103+
| 102 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (char *,const Blob &,int,int); ; Argument[*1]; Argument[*0]; taint; manual |
104+
| 103 | Summary: BloombergLP::bdlbb; BlobUtil; true; getContiguousRangeOrCopy; ; ; Argument[*1]; ReturnValue[*]; taint; manual |
105+
| 104 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual |
105106
edges
106107
| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:56 |
107108
| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | recv_buffer | provenance | Src:MaD:56 Sink:MaD:4 |
@@ -110,7 +111,7 @@ edges
110111
| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | |
111112
| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:101:7:101:17 | send_buffer | provenance | |
112113
| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | send_buffer | provenance | Sink:MaD:4 |
113-
| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:103 |
114+
| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:104 |
114115
| azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:257:5:257:8 | *resp | provenance | |
115116
| azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:262:5:262:8 | *resp | provenance | |
116117
| azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:266:38:266:41 | *resp | provenance | |
@@ -150,31 +151,38 @@ edges
150151
| azure.cpp:294:38:294:53 | call to operator[] | azure.cpp:295:10:295:20 | contentType | provenance | |
151152
| azure.cpp:294:38:294:53 | call to operator[] | azure.cpp:295:10:295:20 | contentType | provenance | |
152153
| azure.cpp:295:10:295:20 | contentType | azure.cpp:295:10:295:20 | contentType | provenance | |
153-
| bdlbb.cpp:48:16:48:23 | call to source | bdlbb.cpp:50:49:50:52 | *call to data | provenance | TaintFunction |
154-
| bdlbb.cpp:50:37:50:41 | copy output argument | bdlbb.cpp:52:42:52:45 | *blob | provenance | |
155-
| bdlbb.cpp:50:49:50:52 | *call to data | bdlbb.cpp:50:37:50:41 | copy output argument | provenance | MaD:100 |
156-
| bdlbb.cpp:52:37:52:39 | copy output argument | bdlbb.cpp:53:7:53:10 | * ... | provenance | |
157-
| bdlbb.cpp:52:42:52:45 | *blob | bdlbb.cpp:52:37:52:39 | copy output argument | provenance | MaD:101 |
158-
| bdlbb.cpp:57:16:57:23 | call to source | bdlbb.cpp:59:49:59:52 | *call to data | provenance | TaintFunction |
159-
| bdlbb.cpp:59:37:59:41 | copy output argument | bdlbb.cpp:60:18:60:21 | *blob | provenance | |
160-
| bdlbb.cpp:59:49:59:52 | *call to data | bdlbb.cpp:59:37:59:41 | copy output argument | provenance | MaD:100 |
161-
| bdlbb.cpp:60:18:60:21 | *blob | bdlbb.cpp:60:29:60:32 | *call to buffer | provenance | MaD:97 |
162-
| bdlbb.cpp:60:18:60:38 | *call to data | bdlbb.cpp:60:18:60:38 | *call to data | provenance | |
163-
| bdlbb.cpp:60:18:60:38 | *call to data | bdlbb.cpp:61:7:61:8 | * ... | provenance | |
164-
| bdlbb.cpp:60:29:60:32 | *call to buffer | bdlbb.cpp:60:18:60:38 | *call to data | provenance | MaD:98 |
165-
| bdlbb.cpp:65:16:65:23 | call to source | bdlbb.cpp:67:49:67:52 | *call to data | provenance | TaintFunction |
166-
| bdlbb.cpp:67:37:67:41 | copy output argument | bdlbb.cpp:69:72:69:75 | *blob | provenance | |
167-
| bdlbb.cpp:67:49:67:52 | *call to data | bdlbb.cpp:67:37:67:41 | copy output argument | provenance | MaD:100 |
168-
| bdlbb.cpp:69:12:69:65 | *call to getContiguousRangeOrCopy | bdlbb.cpp:69:12:69:65 | *call to getContiguousRangeOrCopy | provenance | |
169-
| bdlbb.cpp:69:12:69:65 | *call to getContiguousRangeOrCopy | bdlbb.cpp:70:7:70:8 | * ... | provenance | |
170-
| bdlbb.cpp:69:72:69:75 | *blob | bdlbb.cpp:69:12:69:65 | *call to getContiguousRangeOrCopy | provenance | MaD:102 |
171-
| bdlbb.cpp:75:16:75:23 | call to source | bdlbb.cpp:77:48:77:51 | *call to data | provenance | TaintFunction |
172-
| bdlbb.cpp:77:37:77:40 | copy output argument | bdlbb.cpp:79:46:79:48 | *src | provenance | |
173-
| bdlbb.cpp:77:48:77:51 | *call to data | bdlbb.cpp:77:37:77:40 | copy output argument | provenance | MaD:100 |
174-
| bdlbb.cpp:79:37:79:40 | copy output argument | bdlbb.cpp:81:42:81:44 | *dst | provenance | |
175-
| bdlbb.cpp:79:46:79:48 | *src | bdlbb.cpp:79:37:79:40 | copy output argument | provenance | MaD:99 |
176-
| bdlbb.cpp:81:37:81:39 | copy output argument | bdlbb.cpp:82:7:82:10 | * ... | provenance | |
177-
| bdlbb.cpp:81:42:81:44 | *dst | bdlbb.cpp:81:37:81:39 | copy output argument | provenance | MaD:101 |
154+
| bdlbb.cpp:54:16:54:23 | call to source | bdlbb.cpp:56:49:56:52 | *call to data | provenance | TaintFunction |
155+
| bdlbb.cpp:56:37:56:41 | copy output argument | bdlbb.cpp:58:42:58:45 | *blob | provenance | |
156+
| bdlbb.cpp:56:49:56:52 | *call to data | bdlbb.cpp:56:37:56:41 | copy output argument | provenance | MaD:101 |
157+
| bdlbb.cpp:58:37:58:39 | copy output argument | bdlbb.cpp:59:7:59:10 | * ... | provenance | |
158+
| bdlbb.cpp:58:42:58:45 | *blob | bdlbb.cpp:58:37:58:39 | copy output argument | provenance | MaD:102 |
159+
| bdlbb.cpp:63:16:63:23 | call to source | bdlbb.cpp:65:49:65:52 | *call to data | provenance | TaintFunction |
160+
| bdlbb.cpp:65:37:65:41 | copy output argument | bdlbb.cpp:66:18:66:21 | *blob | provenance | |
161+
| bdlbb.cpp:65:49:65:52 | *call to data | bdlbb.cpp:65:37:65:41 | copy output argument | provenance | MaD:101 |
162+
| bdlbb.cpp:66:18:66:21 | *blob | bdlbb.cpp:66:29:66:32 | *call to buffer | provenance | MaD:97 |
163+
| bdlbb.cpp:66:18:66:38 | *call to data | bdlbb.cpp:66:18:66:38 | *call to data | provenance | |
164+
| bdlbb.cpp:66:18:66:38 | *call to data | bdlbb.cpp:67:7:67:8 | * ... | provenance | |
165+
| bdlbb.cpp:66:29:66:32 | *call to buffer | bdlbb.cpp:66:18:66:38 | *call to data | provenance | MaD:99 |
166+
| bdlbb.cpp:72:16:72:23 | call to source | bdlbb.cpp:74:49:74:52 | *call to data | provenance | TaintFunction |
167+
| bdlbb.cpp:74:37:74:41 | copy output argument | bdlbb.cpp:75:18:75:21 | *blob | provenance | |
168+
| bdlbb.cpp:74:49:74:52 | *call to data | bdlbb.cpp:74:37:74:41 | copy output argument | provenance | MaD:101 |
169+
| bdlbb.cpp:75:18:75:21 | *blob | bdlbb.cpp:75:29:75:32 | *call to buffer | provenance | MaD:97 |
170+
| bdlbb.cpp:75:18:75:46 | call to get | bdlbb.cpp:76:7:76:8 | * ... | provenance | |
171+
| bdlbb.cpp:75:29:75:32 | *call to buffer | bdlbb.cpp:75:39:75:41 | *call to buffer | provenance | MaD:98 |
172+
| bdlbb.cpp:75:39:75:41 | *call to buffer | bdlbb.cpp:75:18:75:46 | call to get | provenance | DataFlowFunction |
173+
| bdlbb.cpp:80:16:80:23 | call to source | bdlbb.cpp:82:49:82:52 | *call to data | provenance | TaintFunction |
174+
| bdlbb.cpp:82:37:82:41 | copy output argument | bdlbb.cpp:84:72:84:75 | *blob | provenance | |
175+
| bdlbb.cpp:82:49:82:52 | *call to data | bdlbb.cpp:82:37:82:41 | copy output argument | provenance | MaD:101 |
176+
| bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | provenance | |
177+
| bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | bdlbb.cpp:85:7:85:8 | * ... | provenance | |
178+
| bdlbb.cpp:84:72:84:75 | *blob | bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | provenance | MaD:103 |
179+
| bdlbb.cpp:90:16:90:23 | call to source | bdlbb.cpp:92:48:92:51 | *call to data | provenance | TaintFunction |
180+
| bdlbb.cpp:92:37:92:40 | copy output argument | bdlbb.cpp:94:46:94:48 | *src | provenance | |
181+
| bdlbb.cpp:92:48:92:51 | *call to data | bdlbb.cpp:92:37:92:40 | copy output argument | provenance | MaD:101 |
182+
| bdlbb.cpp:94:37:94:40 | copy output argument | bdlbb.cpp:96:42:96:44 | *dst | provenance | |
183+
| bdlbb.cpp:94:46:94:48 | *src | bdlbb.cpp:94:37:94:40 | copy output argument | provenance | MaD:100 |
184+
| bdlbb.cpp:96:37:96:39 | copy output argument | bdlbb.cpp:97:7:97:10 | * ... | provenance | |
185+
| bdlbb.cpp:96:42:96:44 | *dst | bdlbb.cpp:96:37:96:39 | copy output argument | provenance | MaD:102 |
178186
| test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | |
179187
| test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | |
180188
| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:48 |
@@ -563,35 +571,43 @@ nodes
563571
| azure.cpp:295:10:295:20 | contentType | semmle.label | contentType |
564572
| azure.cpp:295:10:295:20 | contentType | semmle.label | contentType |
565573
| azure.cpp:295:10:295:20 | contentType | semmle.label | contentType |
566-
| bdlbb.cpp:48:16:48:23 | call to source | semmle.label | call to source |
567-
| bdlbb.cpp:50:37:50:41 | copy output argument | semmle.label | copy output argument |
568-
| bdlbb.cpp:50:49:50:52 | *call to data | semmle.label | *call to data |
569-
| bdlbb.cpp:52:37:52:39 | copy output argument | semmle.label | copy output argument |
570-
| bdlbb.cpp:52:42:52:45 | *blob | semmle.label | *blob |
571-
| bdlbb.cpp:53:7:53:10 | * ... | semmle.label | * ... |
572-
| bdlbb.cpp:57:16:57:23 | call to source | semmle.label | call to source |
573-
| bdlbb.cpp:59:37:59:41 | copy output argument | semmle.label | copy output argument |
574-
| bdlbb.cpp:59:49:59:52 | *call to data | semmle.label | *call to data |
575-
| bdlbb.cpp:60:18:60:21 | *blob | semmle.label | *blob |
576-
| bdlbb.cpp:60:18:60:38 | *call to data | semmle.label | *call to data |
577-
| bdlbb.cpp:60:18:60:38 | *call to data | semmle.label | *call to data |
578-
| bdlbb.cpp:60:29:60:32 | *call to buffer | semmle.label | *call to buffer |
579-
| bdlbb.cpp:61:7:61:8 | * ... | semmle.label | * ... |
580-
| bdlbb.cpp:65:16:65:23 | call to source | semmle.label | call to source |
581-
| bdlbb.cpp:67:37:67:41 | copy output argument | semmle.label | copy output argument |
582-
| bdlbb.cpp:67:49:67:52 | *call to data | semmle.label | *call to data |
583-
| bdlbb.cpp:69:12:69:65 | *call to getContiguousRangeOrCopy | semmle.label | *call to getContiguousRangeOrCopy |
584-
| bdlbb.cpp:69:12:69:65 | *call to getContiguousRangeOrCopy | semmle.label | *call to getContiguousRangeOrCopy |
585-
| bdlbb.cpp:69:72:69:75 | *blob | semmle.label | *blob |
586-
| bdlbb.cpp:70:7:70:8 | * ... | semmle.label | * ... |
587-
| bdlbb.cpp:75:16:75:23 | call to source | semmle.label | call to source |
588-
| bdlbb.cpp:77:37:77:40 | copy output argument | semmle.label | copy output argument |
589-
| bdlbb.cpp:77:48:77:51 | *call to data | semmle.label | *call to data |
590-
| bdlbb.cpp:79:37:79:40 | copy output argument | semmle.label | copy output argument |
591-
| bdlbb.cpp:79:46:79:48 | *src | semmle.label | *src |
592-
| bdlbb.cpp:81:37:81:39 | copy output argument | semmle.label | copy output argument |
593-
| bdlbb.cpp:81:42:81:44 | *dst | semmle.label | *dst |
594-
| bdlbb.cpp:82:7:82:10 | * ... | semmle.label | * ... |
574+
| bdlbb.cpp:54:16:54:23 | call to source | semmle.label | call to source |
575+
| bdlbb.cpp:56:37:56:41 | copy output argument | semmle.label | copy output argument |
576+
| bdlbb.cpp:56:49:56:52 | *call to data | semmle.label | *call to data |
577+
| bdlbb.cpp:58:37:58:39 | copy output argument | semmle.label | copy output argument |
578+
| bdlbb.cpp:58:42:58:45 | *blob | semmle.label | *blob |
579+
| bdlbb.cpp:59:7:59:10 | * ... | semmle.label | * ... |
580+
| bdlbb.cpp:63:16:63:23 | call to source | semmle.label | call to source |
581+
| bdlbb.cpp:65:37:65:41 | copy output argument | semmle.label | copy output argument |
582+
| bdlbb.cpp:65:49:65:52 | *call to data | semmle.label | *call to data |
583+
| bdlbb.cpp:66:18:66:21 | *blob | semmle.label | *blob |
584+
| bdlbb.cpp:66:18:66:38 | *call to data | semmle.label | *call to data |
585+
| bdlbb.cpp:66:18:66:38 | *call to data | semmle.label | *call to data |
586+
| bdlbb.cpp:66:29:66:32 | *call to buffer | semmle.label | *call to buffer |
587+
| bdlbb.cpp:67:7:67:8 | * ... | semmle.label | * ... |
588+
| bdlbb.cpp:72:16:72:23 | call to source | semmle.label | call to source |
589+
| bdlbb.cpp:74:37:74:41 | copy output argument | semmle.label | copy output argument |
590+
| bdlbb.cpp:74:49:74:52 | *call to data | semmle.label | *call to data |
591+
| bdlbb.cpp:75:18:75:21 | *blob | semmle.label | *blob |
592+
| bdlbb.cpp:75:18:75:46 | call to get | semmle.label | call to get |
593+
| bdlbb.cpp:75:29:75:32 | *call to buffer | semmle.label | *call to buffer |
594+
| bdlbb.cpp:75:39:75:41 | *call to buffer | semmle.label | *call to buffer |
595+
| bdlbb.cpp:76:7:76:8 | * ... | semmle.label | * ... |
596+
| bdlbb.cpp:80:16:80:23 | call to source | semmle.label | call to source |
597+
| bdlbb.cpp:82:37:82:41 | copy output argument | semmle.label | copy output argument |
598+
| bdlbb.cpp:82:49:82:52 | *call to data | semmle.label | *call to data |
599+
| bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | semmle.label | *call to getContiguousRangeOrCopy |
600+
| bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | semmle.label | *call to getContiguousRangeOrCopy |
601+
| bdlbb.cpp:84:72:84:75 | *blob | semmle.label | *blob |
602+
| bdlbb.cpp:85:7:85:8 | * ... | semmle.label | * ... |
603+
| bdlbb.cpp:90:16:90:23 | call to source | semmle.label | call to source |
604+
| bdlbb.cpp:92:37:92:40 | copy output argument | semmle.label | copy output argument |
605+
| bdlbb.cpp:92:48:92:51 | *call to data | semmle.label | *call to data |
606+
| bdlbb.cpp:94:37:94:40 | copy output argument | semmle.label | copy output argument |
607+
| bdlbb.cpp:94:46:94:48 | *src | semmle.label | *src |
608+
| bdlbb.cpp:96:37:96:39 | copy output argument | semmle.label | copy output argument |
609+
| bdlbb.cpp:96:42:96:44 | *dst | semmle.label | *dst |
610+
| bdlbb.cpp:97:7:97:10 | * ... | semmle.label | * ... |
595611
| test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | semmle.label | *ymlStepGenerated_with_body |
596612
| test.cpp:7:47:7:52 | value2 | semmle.label | value2 |
597613
| test.cpp:7:64:7:69 | value2 | semmle.label | value2 |

0 commit comments

Comments
 (0)