Skip to content

Commit d15dc68

Browse files
author
Alvaro Muñoz
authored
Merge pull request #35 from github/default_branch_name
2 parents d5e679a + 00052d1 commit d15dc68

File tree

5 files changed

+32
-7
lines changed

5 files changed

+32
-7
lines changed

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@ private import codeql.actions.DataFlow
33
private import actions
44

55
predicate workflowDataModel(
6-
string path, string visibility, string job, string secrets_source, string permissions,
6+
string path, string trigger, string job, string secrets_source, string permissions,
77
string runner
88
) {
9-
Extensions::workflowDataModel(path, visibility, job, secrets_source, permissions, runner)
9+
Extensions::workflowDataModel(path, trigger, job, secrets_source, permissions, runner)
10+
}
11+
12+
predicate repositoryDataModel(
13+
string visibility, string default_branch_name
14+
) {
15+
Extensions::repositoryDataModel(visibility, default_branch_name)
1016
}
1117

1218
/**

ql/lib/codeql/actions/dataflow/internal/ExternalFlowExtensions.qll

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ extensible predicate sinkModel(
2424
);
2525

2626
extensible predicate workflowDataModel(
27-
string path, string visibility, string job, string secrets_source, string permissions,
27+
string path, string trigger, string job, string secrets_source, string permissions,
2828
string runner
2929
);
30+
31+
extensible predicate repositoryDataModel(
32+
string visibility, string default_branch_name
33+
);

ql/lib/codeql/actions/security/CachePoisoningQuery.qll

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import actions
2+
import codeql.actions.dataflow.ExternalFlow
23

34
string defaultBranchTriggerEvent() {
45
result =
@@ -10,7 +11,17 @@ string defaultBranchTriggerEvent() {
1011
]
1112
}
1213

13-
string defaultBranchNames() { result = ["main", "master", "default"] }
14+
string defaultBranchNames() {
15+
exists(string default_branch_name |
16+
repositoryDataModel(_, default_branch_name) and
17+
result = default_branch_name
18+
)
19+
or
20+
not exists(string default_branch_name |
21+
repositoryDataModel(_, default_branch_name)
22+
) and
23+
result = ["main", "master"]
24+
}
1425

1526
predicate runsOnDefaultBranch(Job j) {
1627
exists(Event e |

ql/lib/ext/workflow-models/workflow-models.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
extensions:
2+
- addsTo:
3+
pack: githubsecuritylab/actions-all
4+
extensible: repositoryDataModel
5+
data: []
26
- addsTo:
37
pack: githubsecuritylab/actions-all
48
extensible: workflowDataModel

ql/test/library-tests/workflowenum.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import actions
22
import codeql.actions.dataflow.internal.ExternalFlowExtensions as Extensions
33

44
from
5-
string path, string visibility, string job, string secrets_source, string permissions,
5+
string path, string trigger, string job, string secrets_source, string permissions,
66
string runner
7-
where Extensions::workflowDataModel(path, visibility, job, secrets_source, permissions, runner)
8-
select visibility, path, job, secrets_source, permissions, runner
7+
where Extensions::workflowDataModel(path, trigger, job, secrets_source, permissions, runner)
8+
select trigger, path, job, secrets_source, permissions, runner

0 commit comments

Comments
 (0)