Skip to content

Commit 5be58e7

Browse files
Bug fix to change order of remediation (#1633)
1 parent 1d7d8da commit 5be58e7

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

remediation/workflow/hardenrunner/addaction.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
metadata "github.com/step-security/secure-workflows/remediation/workflow/metadata"
88
"github.com/step-security/secure-workflows/remediation/workflow/permissions"
9+
"github.com/step-security/secure-workflows/remediation/workflow/pin"
910
"gopkg.in/yaml.v3"
1011
)
1112

@@ -14,7 +15,7 @@ const (
1415
HardenRunnerActionName = "Harden Runner"
1516
)
1617

17-
func AddAction(inputYaml, action string) (string, bool, error) {
18+
func AddAction(inputYaml, action string, pinActions bool) (string, bool, error) {
1819
workflow := metadata.Workflow{}
1920
updated := false
2021
err := yaml.Unmarshal([]byte(inputYaml), &workflow)
@@ -45,6 +46,10 @@ func AddAction(inputYaml, action string) (string, bool, error) {
4546
}
4647
}
4748

49+
if updated && pinActions {
50+
out, _ = pin.PinAction(action, out)
51+
}
52+
4853
return out, updated, nil
4954
}
5055

remediation/workflow/hardenrunner/addaction_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestAddAction(t *testing.T) {
3232
if err != nil {
3333
t.Fatalf("error reading test file")
3434
}
35-
got, gotUpdated, err := AddAction(string(input), tt.args.action)
35+
got, gotUpdated, err := AddAction(string(input), tt.args.action, false)
3636

3737
if gotUpdated != tt.wantUpdated {
3838
t.Errorf("AddAction() updated = %v, wantUpdated %v", gotUpdated, tt.wantUpdated)

remediation/workflow/pin/pinactions.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ func PinActions(inputYaml string) (string, bool, error) {
2222

2323
out := inputYaml
2424

25-
for jobName, job := range workflow.Jobs {
25+
for _, job := range workflow.Jobs {
2626

2727
for _, step := range job.Steps {
2828
if len(step.Uses) > 0 {
2929
localUpdated := false
30-
out, localUpdated = pinAction(step.Uses, jobName, out)
30+
out, localUpdated = PinAction(step.Uses, out)
3131
updated = updated || localUpdated
3232
}
3333
}
@@ -36,7 +36,7 @@ func PinActions(inputYaml string) (string, bool, error) {
3636
return out, updated, nil
3737
}
3838

39-
func pinAction(action, jobName, inputYaml string) (string, bool) {
39+
func PinAction(action, inputYaml string) (string, bool) {
4040

4141
updated := false
4242
if !strings.Contains(action, "@") || strings.HasPrefix(action, "docker://") {

remediation/workflow/secureworkflow.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,17 @@ func SecureWorkflow(queryStringParams map[string]string, inputYaml string, svc d
6666
addedPermissions = !secureWorkflowReponse.HasErrors
6767
}
6868

69-
if addHardenRunner {
70-
secureWorkflowReponse.FinalOutput, addedHardenRunner, _ = hardenrunner.AddAction(secureWorkflowReponse.FinalOutput, HardenRunnerActionPathWithTag)
71-
}
72-
7369
if pinActions {
7470
pinnedAction, pinnedDocker := false, false
7571
secureWorkflowReponse.FinalOutput, pinnedAction, _ = pin.PinActions(secureWorkflowReponse.FinalOutput)
7672
secureWorkflowReponse.FinalOutput, pinnedDocker, _ = pin.PinDocker(secureWorkflowReponse.FinalOutput)
7773
pinnedActions = pinnedAction || pinnedDocker
7874
}
7975

76+
if addHardenRunner {
77+
secureWorkflowReponse.FinalOutput, addedHardenRunner, _ = hardenrunner.AddAction(secureWorkflowReponse.FinalOutput, HardenRunnerActionPathWithTag, pinActions)
78+
}
79+
8080
// Setting appropriate flags
8181
secureWorkflowReponse.PinnedActions = pinnedActions
8282
secureWorkflowReponse.AddedHardenRunner = addedHardenRunner

0 commit comments

Comments
 (0)