Skip to content

Commit 629369b

Browse files
committed
Further code cleanup
1 parent 5370bb4 commit 629369b

File tree

3 files changed

+36
-37
lines changed

3 files changed

+36
-37
lines changed

cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta
109109
override Crypto::TPaddingType getPaddingType() {
110110
isPaddingSpecificConsumer = true and
111111
(
112-
result = getKnownPaddingType()
112+
result = this.getKnownPaddingType()
113113
or
114-
not exists(getKnownPaddingType()) and result = Crypto::OtherPadding()
114+
not exists(this.getKnownPaddingType()) and result = Crypto::OtherPadding()
115115
)
116116
or
117117
isPaddingSpecificConsumer = false and

cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class EVP_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorit
1515

1616
EVP_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer() {
1717
resultNode.asExpr() = this and
18-
this.(Call).getTarget().getName() in ["EVP_PKEY_CTX_set_rsa_padding"] and
18+
this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_padding" and
1919
valueArgNode.asExpr() = this.(Call).getArgument(1)
2020
}
2121

cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -28,100 +28,99 @@ import semmle.code.cpp.dataflow.new.DataFlow
2828
* - EVP_MD_CTX
2929
* - EVP_PKEY_CTX
3030
*/
31-
private class CTXType extends Type {
32-
CTXType() { this.getUnspecifiedType().stripType().getName().matches("evp_%ctx_%st") }
31+
private class CtxType extends Type {
32+
CtxType() { this.getUnspecifiedType().stripType().getName().matches("evp_%ctx_%st") }
3333
}
3434

3535
/**
36-
* A pointer to a CTXType
36+
* A pointer to a CtxType
3737
*/
38-
private class CTXPointerExpr extends Expr {
39-
CTXPointerExpr() {
40-
this.getType() instanceof CTXType and
38+
private class CtxPointerExpr extends Expr {
39+
CtxPointerExpr() {
40+
this.getType() instanceof CtxType and
4141
this.getType() instanceof PointerType
4242
}
4343
}
4444

4545
/**
46-
* A call argument of type CTXPointerExpr.
46+
* A call argument of type CtxPointerExpr.
4747
*/
48-
private class CTXPointerArgument extends CTXPointerExpr {
49-
CTXPointerArgument() { exists(Call c | c.getAnArgument() = this) }
48+
private class CtxPointerArgument extends CtxPointerExpr {
49+
CtxPointerArgument() { exists(Call c | c.getAnArgument() = this) }
5050

5151
Call getCall() { result.getAnArgument() = this }
5252
}
5353

5454
/**
5555
* A call whose target contains 'free' or 'reset' and has an argument of type
56-
* CTXPointerArgument.
56+
* CtxPointerArgument.
5757
*/
58-
private class CTXClearCall extends Call {
59-
CTXClearCall() {
58+
private class CtxClearCall extends Call {
59+
CtxClearCall() {
6060
this.getTarget().getName().toLowerCase().matches(["%free%", "%reset%"]) and
61-
this.getAnArgument() instanceof CTXPointerArgument
61+
this.getAnArgument() instanceof CtxPointerArgument
6262
}
6363
}
6464

6565
/**
6666
* A call whose target contains 'copy' and has an argument of type
67-
* CTXPointerArgument.
67+
* CtxPointerArgument.
6868
*/
69-
private class CTXCopyOutArgCall extends Call {
70-
CTXCopyOutArgCall() {
69+
private class CtxCopyOutArgCall extends Call {
70+
CtxCopyOutArgCall() {
7171
this.getTarget().getName().toLowerCase().matches("%copy%") and
72-
this.getAnArgument() instanceof CTXPointerArgument
72+
this.getAnArgument() instanceof CtxPointerArgument
7373
}
7474
}
7575

7676
/**
7777
* A call whose target contains 'dup' and has an argument of type
78-
* CTXPointerArgument.
78+
* CtxPointerArgument.
7979
*/
80-
private class CTXCopyReturnCall extends Call {
81-
CTXCopyReturnCall() {
80+
private class CtxCopyReturnCall extends Call, CtxPointerExpr {
81+
CtxCopyReturnCall() {
8282
this.getTarget().getName().toLowerCase().matches("%dup%") and
83-
this.getAnArgument() instanceof CTXPointerArgument and
84-
this instanceof CTXPointerExpr
83+
this.getAnArgument() instanceof CtxPointerArgument
8584
}
8685
}
8786

8887
/**
89-
* Flow from any CTXPointerArgument to any other CTXPointerArgument
88+
* Flow from any CtxPointerArgument to any other CtxPointerArgument
9089
*/
91-
module OpenSSLCTXArgumentFlowConfig implements DataFlow::ConfigSig {
92-
predicate isSource(DataFlow::Node source) { source.asExpr() instanceof CTXPointerArgument }
90+
module OpenSSLCtxArgumentFlowConfig implements DataFlow::ConfigSig {
91+
predicate isSource(DataFlow::Node source) { source.asExpr() instanceof CtxPointerArgument }
9392

94-
predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof CTXPointerArgument }
93+
predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof CtxPointerArgument }
9594

9695
predicate isBarrier(DataFlow::Node node) {
97-
exists(CTXClearCall c | c.getAnArgument() = node.asExpr())
96+
exists(CtxClearCall c | c.getAnArgument() = node.asExpr())
9897
}
9998

10099
predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) {
101-
exists(CTXCopyOutArgCall c |
100+
exists(CtxCopyOutArgCall c |
102101
c.getAnArgument() = node1.asExpr() and
103102
c.getAnArgument() = node2.asExpr() and
104103
node1.asExpr() != node2.asExpr() and
105-
node2.asExpr().getType() instanceof CTXType
104+
node2.asExpr().getType() instanceof CtxType
106105
)
107106
or
108-
exists(CTXCopyReturnCall c |
107+
exists(CtxCopyReturnCall c |
109108
c.getAnArgument() = node1.asExpr() and
110109
c = node2.asExpr() and
111110
node1.asExpr() != node2.asExpr() and
112-
node2.asExpr().getType() instanceof CTXType
111+
node2.asExpr().getType() instanceof CtxType
113112
)
114113
}
115114
}
116115

117-
module OpenSSLCTXArgumentFlow = DataFlow::Global<OpenSSLCTXArgumentFlowConfig>;
116+
module OpenSSLCtxArgumentFlow = DataFlow::Global<OpenSSLCtxArgumentFlowConfig>;
118117

119118
/**
120119
* Holds if there is a context flow from the source to the sink.
121120
*/
122-
predicate ctxArgFlowsToCtxArg(CTXPointerArgument source, CTXPointerArgument sink) {
121+
predicate ctxArgFlowsToCtxArg(CtxPointerArgument source, CtxPointerArgument sink) {
123122
exists(DataFlow::Node a, DataFlow::Node b |
124-
OpenSSLCTXArgumentFlow::flow(a, b) and
123+
OpenSSLCtxArgumentFlow::flow(a, b) and
125124
a.asExpr() = source and
126125
b.asExpr() = sink
127126
)

0 commit comments

Comments
 (0)