Skip to content

Commit 9abe3e3

Browse files
Jami CogswellJami Cogswell
authored andcommitted
Shared: use a module as input to 'KindValidation'
1 parent bcba1f3 commit 9abe3e3

File tree

8 files changed

+63
-85
lines changed

8 files changed

+63
-85
lines changed

csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -205,20 +205,17 @@ module ModelValidation {
205205
)
206206
}
207207

208-
/** Holds if a summary model exists for the given `kind`. */
209-
private predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) }
208+
private module KindValConfig implements SharedModelVal::KindValidationConfigSig {
209+
predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) }
210210

211-
/** Holds if a sink model exists for the given `kind`. */
212-
private predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) }
211+
predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) }
213212

214-
/** Holds if a source model exists for the given `kind`. */
215-
private predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) }
213+
predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) }
216214

217-
/** Holds if a neutral model exists for the given `kind`. */
218-
private predicate neutralKind(string kind) { neutralModel(_, _, _, _, kind, _) }
215+
predicate neutralKind(string kind) { neutralModel(_, _, _, _, kind, _) }
216+
}
219217

220-
private module KindVal =
221-
SharedModelVal::KindValidation<summaryKind/1, sinkKind/1, sourceKind/1, neutralKind/1>;
218+
private module KindVal = SharedModelVal::KindValidation<KindValConfig>;
222219

223220
private string getInvalidModelSignature() {
224221
exists(

go/ql/lib/semmle/go/dataflow/ExternalFlow.qll

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -189,20 +189,15 @@ module ModelValidation {
189189
)
190190
}
191191

192-
/** Holds if a summary model exists for the given `kind`. */
193-
private predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) }
192+
private module KindValConfig implements SharedModelVal::KindValidationConfigSig {
193+
predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) }
194194

195-
/** Holds if a sink model exists for the given `kind`. */
196-
private predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) }
195+
predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) }
197196

198-
/** Holds if a source model exists for the given `kind`. */
199-
private predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) }
200-
201-
/** Holds if a neutral model exists for the given `kind`. */
202-
private predicate neutralKind(string kind) { none() }
197+
predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) }
198+
}
203199

204-
private module KindVal =
205-
SharedModelVal::KindValidation<summaryKind/1, sinkKind/1, sourceKind/1, neutralKind/1>;
200+
private module KindVal = SharedModelVal::KindValidation<KindValConfig>;
206201

207202
private string getInvalidModelSignature() {
208203
exists(

java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -266,20 +266,17 @@ module ModelValidation {
266266
)
267267
}
268268

269-
/** Holds if a summary model exists for the given `kind`. */
270-
private predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) }
269+
private module KindValConfig implements SharedModelVal::KindValidationConfigSig {
270+
predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) }
271271

272-
/** Holds if a sink model exists for the given `kind`. */
273-
private predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) }
272+
predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) }
274273

275-
/** Holds if a source model exists for the given `kind`. */
276-
private predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) }
274+
predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) }
277275

278-
/** Holds if a neutral model exists for the given `kind`. */
279-
private predicate neutralKind(string kind) { neutralModel(_, _, _, _, kind, _) }
276+
predicate neutralKind(string kind) { neutralModel(_, _, _, _, kind, _) }
277+
}
280278

281-
private module KindVal =
282-
SharedModelVal::KindValidation<summaryKind/1, sinkKind/1, sourceKind/1, neutralKind/1>;
279+
private module KindVal = SharedModelVal::KindValidation<KindValConfig>;
283280

284281
private string getInvalidModelSignature() {
285282
exists(

javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -655,20 +655,15 @@ module ModelOutput {
655655
import Specific::ModelOutputSpecific
656656
private import codeql.mad.ModelValidation as SharedModelVal
657657

658-
/** Holds if a summary model exists for the given `kind`. */
659-
private predicate summaryKind(string kind) { summaryModel(_, _, _, _, kind) }
658+
private module KindValConfig implements SharedModelVal::KindValidationConfigSig {
659+
predicate summaryKind(string kind) { summaryModel(_, _, _, _, kind) }
660660

661-
/** Holds if a sink model exists for the given `kind`. */
662-
private predicate sinkKind(string kind) { sinkModel(_, _, kind) }
661+
predicate sinkKind(string kind) { sinkModel(_, _, kind) }
663662

664-
/** Holds if a source model exists for the given `kind`. */
665-
private predicate sourceKind(string kind) { sourceModel(_, _, kind) }
666-
667-
/** Holds if a neutral model exists for the given `kind`. */
668-
private predicate neutralKind(string kind) { none() }
663+
predicate sourceKind(string kind) { sourceModel(_, _, kind) }
664+
}
669665

670-
private module KindVal =
671-
SharedModelVal::KindValidation<summaryKind/1, sinkKind/1, sourceKind/1, neutralKind/1>;
666+
private module KindVal = SharedModelVal::KindValidation<KindValConfig>;
672667

673668
/**
674669
* Gets an error message relating to an invalid CSV row in a model.

python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -655,20 +655,15 @@ module ModelOutput {
655655
import Specific::ModelOutputSpecific
656656
private import codeql.mad.ModelValidation as SharedModelVal
657657

658-
/** Holds if a summary model exists for the given `kind`. */
659-
private predicate summaryKind(string kind) { summaryModel(_, _, _, _, kind) }
658+
private module KindValConfig implements SharedModelVal::KindValidationConfigSig {
659+
predicate summaryKind(string kind) { summaryModel(_, _, _, _, kind) }
660660

661-
/** Holds if a sink model exists for the given `kind`. */
662-
private predicate sinkKind(string kind) { sinkModel(_, _, kind) }
661+
predicate sinkKind(string kind) { sinkModel(_, _, kind) }
663662

664-
/** Holds if a source model exists for the given `kind`. */
665-
private predicate sourceKind(string kind) { sourceModel(_, _, kind) }
666-
667-
/** Holds if a neutral model exists for the given `kind`. */
668-
private predicate neutralKind(string kind) { none() }
663+
predicate sourceKind(string kind) { sourceModel(_, _, kind) }
664+
}
669665

670-
private module KindVal =
671-
SharedModelVal::KindValidation<summaryKind/1, sinkKind/1, sourceKind/1, neutralKind/1>;
666+
private module KindVal = SharedModelVal::KindValidation<KindValConfig>;
672667

673668
/**
674669
* Gets an error message relating to an invalid CSV row in a model.

ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -655,20 +655,15 @@ module ModelOutput {
655655
import Specific::ModelOutputSpecific
656656
private import codeql.mad.ModelValidation as SharedModelVal
657657

658-
/** Holds if a summary model exists for the given `kind`. */
659-
private predicate summaryKind(string kind) { summaryModel(_, _, _, _, kind) }
658+
private module KindValConfig implements SharedModelVal::KindValidationConfigSig {
659+
predicate summaryKind(string kind) { summaryModel(_, _, _, _, kind) }
660660

661-
/** Holds if a sink model exists for the given `kind`. */
662-
private predicate sinkKind(string kind) { sinkModel(_, _, kind) }
661+
predicate sinkKind(string kind) { sinkModel(_, _, kind) }
663662

664-
/** Holds if a source model exists for the given `kind`. */
665-
private predicate sourceKind(string kind) { sourceModel(_, _, kind) }
666-
667-
/** Holds if a neutral model exists for the given `kind`. */
668-
private predicate neutralKind(string kind) { none() }
663+
predicate sourceKind(string kind) { sourceModel(_, _, kind) }
664+
}
669665

670-
private module KindVal =
671-
SharedModelVal::KindValidation<summaryKind/1, sinkKind/1, sourceKind/1, neutralKind/1>;
666+
private module KindVal = SharedModelVal::KindValidation<KindValConfig>;
672667

673668
/**
674669
* Gets an error message relating to an invalid CSV row in a model.

shared/mad/codeql/mad/ModelValidation.qll

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,23 @@
22
* Provides classes and predicates related to validating models-as-data rows.
33
*/
44

5-
/** Holds if a model exists for the given `kind`. */
6-
signature predicate modelKindSig(string kind);
5+
/** Provides predicates for determining if a model exists for a given `kind`. */
6+
signature module KindValidationConfigSig {
7+
/** Holds if a summary model exists for the given `kind`. */
8+
predicate summaryKind(string kind);
9+
10+
/** Holds if a sink model exists for the given `kind`. */
11+
predicate sinkKind(string kind);
12+
13+
/** Holds if a source model exists for the given `kind`. */
14+
predicate sourceKind(string kind);
15+
16+
/** Holds if a neutral model exists for the given `kind`. */
17+
default predicate neutralKind(string kind) { none() }
18+
}
719

820
/** Provides validation for models-as-data summary, sink, source, and neutral kinds. */
9-
module KindValidation<
10-
modelKindSig/1 summaryKind, modelKindSig/1 sinkKind, modelKindSig/1 sourceKind,
11-
modelKindSig/1 neutralKind>
12-
{
21+
module KindValidation<KindValidationConfigSig Config> {
1322
/** A valid models-as-data sink kind. */
1423
private class ValidSinkKind extends string {
1524
bindingset[this]
@@ -150,12 +159,12 @@ module KindValidation<
150159

151160
/** Gets an error message relating to an invalid kind in a model. */
152161
string getInvalidModelKind() {
153-
exists(string kind | summaryKind(kind) |
162+
exists(string kind | Config::summaryKind(kind) |
154163
not kind instanceof ValidSummaryKind and
155164
result = "Invalid kind \"" + kind + "\" in summary model."
156165
)
157166
or
158-
exists(string kind, string msg | sinkKind(kind) |
167+
exists(string kind, string msg | Config::sinkKind(kind) |
159168
not kind instanceof ValidSinkKind and
160169
msg = "Invalid kind \"" + kind + "\" in sink model." and
161170
// The part of this message that refers to outdated sink kinds can be deleted after June 1st, 2024.
@@ -164,12 +173,12 @@ module KindValidation<
164173
else result = msg
165174
)
166175
or
167-
exists(string kind | sourceKind(kind) |
176+
exists(string kind | Config::sourceKind(kind) |
168177
not kind instanceof ValidSourceKind and
169178
result = "Invalid kind \"" + kind + "\" in source model."
170179
)
171180
or
172-
exists(string kind | neutralKind(kind) |
181+
exists(string kind | Config::neutralKind(kind) |
173182
not kind instanceof ValidNeutralKind and
174183
result = "Invalid kind \"" + kind + "\" in neutral model."
175184
)

swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -264,20 +264,15 @@ module CsvValidation {
264264
)
265265
}
266266

267-
/** Holds if a summary model exists for the given `kind`. */
268-
private predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) }
267+
private module KindValConfig implements SharedModelVal::KindValidationConfigSig {
268+
predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) }
269269

270-
/** Holds if a sink model exists for the given `kind`. */
271-
private predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) }
270+
predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) }
272271

273-
/** Holds if a source model exists for the given `kind`. */
274-
private predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) }
275-
276-
/** Holds if a neutral model exists for the given `kind`. */
277-
private predicate neutralKind(string kind) { none() }
272+
predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) }
273+
}
278274

279-
private module KindVal =
280-
SharedModelVal::KindValidation<summaryKind/1, sinkKind/1, sourceKind/1, neutralKind/1>;
275+
private module KindVal = SharedModelVal::KindValidation<KindValConfig>;
281276

282277
private string getInvalidModelSubtype() {
283278
exists(string pred, string row |

0 commit comments

Comments
 (0)