Skip to content

Commit 3957460

Browse files
authored
update (#2011)
1 parent 6a032a3 commit 3957460

File tree

5 files changed

+38
-99
lines changed

5 files changed

+38
-99
lines changed

checks/permissions.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/ossf/scorecard/v4/checker"
2424
"github.com/ossf/scorecard/v4/checks/fileparser"
2525
sce "github.com/ossf/scorecard/v4/errors"
26+
"github.com/ossf/scorecard/v4/remediation"
2627
)
2728

2829
// CheckTokenPermissions is the exported name for Token-Permissions check.
@@ -83,7 +84,7 @@ func TokenPermissions(c *checker.CheckRequest) checker.CheckResult {
8384
workflows: make(map[string]permissions),
8485
}
8586

86-
if err := remdiationSetup(c); err != nil {
87+
if err := remediation.Setup(c); err != nil {
8788
createResultForLeastPrivilegeTokens(data, err)
8889
}
8990

@@ -167,7 +168,7 @@ func validatePermission(permissionKey permission, permissionValue *actionlint.Pe
167168
Offset: lineNumber,
168169
Text: fmt.Sprintf("%s '%v' permission set to '%v'", permLevel, permissionKey, val),
169170
Snippet: val,
170-
Remediation: createWorkflowPermissionRemediation(path),
171+
Remediation: remediation.CreateWorkflowPermissionRemediation(path),
171172
})
172173
recordPermissionWrite(pPermissions, permissionKey)
173174
} else {
@@ -179,7 +180,7 @@ func validatePermission(permissionKey permission, permissionValue *actionlint.Pe
179180
Offset: lineNumber,
180181
Text: fmt.Sprintf("%s '%v' permission set to '%v'", permLevel, permissionKey, val),
181182
Snippet: val,
182-
Remediation: createWorkflowPermissionRemediation(path),
183+
Remediation: remediation.CreateWorkflowPermissionRemediation(path),
183184
})
184185
}
185186
return nil
@@ -255,7 +256,7 @@ func validatePermissions(permissions *actionlint.Permissions, permLevel, path st
255256
Offset: lineNumber,
256257
Text: fmt.Sprintf("%s permissions set to '%v'", permLevel, val),
257258
Snippet: val,
258-
Remediation: createWorkflowPermissionRemediation(path),
259+
Remediation: remediation.CreateWorkflowPermissionRemediation(path),
259260
})
260261
recordAllPermissionsWrite(pdata, permLevel, path)
261262
return nil
@@ -267,7 +268,7 @@ func validatePermissions(permissions *actionlint.Permissions, permLevel, path st
267268
Offset: lineNumber,
268269
Text: fmt.Sprintf("%s permissions set to '%v'", permLevel, val),
269270
Snippet: val,
270-
Remediation: createWorkflowPermissionRemediation(path),
271+
Remediation: remediation.CreateWorkflowPermissionRemediation(path),
271272
})
272273
} else /* scopeIsSet == true */ if err := validateMapPermissions(permissions.Scopes,
273274
permLevel, path, dl, getWritePermissionsMap(pdata, path, permLevel), ignoredPermissions); err != nil {
@@ -286,7 +287,7 @@ func validateTopLevelPermissions(workflow *actionlint.Workflow, path string,
286287
Type: checker.FileTypeSource,
287288
Offset: checker.OffsetDefault,
288289
Text: fmt.Sprintf("no %s permission defined", topLevelPermission),
289-
Remediation: createWorkflowPermissionRemediation(path),
290+
Remediation: remediation.CreateWorkflowPermissionRemediation(path),
290291
})
291292
recordAllPermissionsWrite(pdata, topLevelPermission, path)
292293
return nil
@@ -310,7 +311,7 @@ func validatejobLevelPermissions(workflow *actionlint.Workflow, path string,
310311
Type: checker.FileTypeSource,
311312
Offset: fileparser.GetLineNumber(job.Pos),
312313
Text: fmt.Sprintf("no %s permission defined", jobLevelPermission),
313-
Remediation: createWorkflowPermissionRemediation(path),
314+
Remediation: remediation.CreateWorkflowPermissionRemediation(path),
314315
})
315316
recordAllPermissionsWrite(pdata, jobLevelPermission, path)
316317
continue
@@ -615,7 +616,7 @@ func isReleasingWorkflow(workflow *actionlint.Workflow, fp string, dl checker.De
615616
}
616617

617618
// TODO: remove when migrated to raw results.
618-
// Should be using the definition in raw/packaging.go
619+
// Should be using the definition in raw/packaging.go.
619620
func isPackagingWorkflow(workflow *actionlint.Workflow, fp string, dl checker.DetailLogger) bool {
620621
jobMatchers := []fileparser.JobMatcher{
621622
{

checks/raw/fuzzing.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ type filesWithPatternStr struct {
4242
type languageFuzzConfig struct {
4343
URL, Desc *string
4444
filePattern, funcPattern, Name string
45-
//TODO: add more language fuzzing-related fields.
45+
// TODO: add more language fuzzing-related fields.
4646
}
4747

4848
// Contains fuzzing speficications for programming languages.
@@ -190,7 +190,8 @@ func checkFuzzFunc(c *checker.CheckRequest, lang clients.LanguageName) (bool, []
190190
// used for matching fuzz functions in the file content,
191191
// and return a list of files (or nil for not found).
192192
var getFuzzFunc fileparser.DoWhileTrueOnFileContent = func(
193-
path string, content []byte, args ...interface{}) (bool, error) {
193+
path string, content []byte, args ...interface{},
194+
) (bool, error) {
194195
if len(args) != 1 {
195196
return false, fmt.Errorf("getFuzzFunc requires exactly one argument: %w", errInvalidArgLength)
196197
}

checks/remediations.go

Lines changed: 0 additions & 88 deletions
This file was deleted.

e2e/permissions_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,30 @@ var _ = Describe("E2E TEST:"+checks.CheckTokenPermissions, func() {
5757
Expect(scut.ValidateTestReturn(nil, "token permissions", &expected, &result, &dl)).Should(BeTrue())
5858
Expect(repoClient.Close()).Should(BeNil())
5959
})
60+
It("Should return token permission works on empty repo", func() {
61+
dl := scut.TestDetailLogger{}
62+
repo, err := githubrepo.MakeGithubRepo("ossf-tests/scorecard-empty-repo")
63+
Expect(err).Should(BeNil())
64+
repoClient := githubrepo.CreateGithubRepoClient(context.Background(), logger)
65+
err = repoClient.InitRepo(repo, clients.HeadSHA)
66+
Expect(err).Should(BeNil())
67+
req := checker.CheckRequest{
68+
Ctx: context.Background(),
69+
RepoClient: repoClient,
70+
Repo: repo,
71+
Dlogger: &dl,
72+
}
73+
expected := scut.TestReturn{
74+
Error: nil,
75+
Score: checker.MaxResultScore,
76+
NumberOfWarn: 0,
77+
NumberOfInfo: 0,
78+
NumberOfDebug: 0,
79+
}
80+
result := checks.TokenPermissions(&req)
81+
Expect(scut.ValidateTestReturn(nil, "token permissions", &expected, &result, &dl)).Should(BeTrue())
82+
Expect(repoClient.Close()).Should(BeNil())
83+
})
6084
It("Should return token permission at commit", func() {
6185
dl := scut.TestDetailLogger{}
6286
repo, err := githubrepo.MakeGithubRepo("ossf-tests/scorecard-check-token-permissions-e2e")

remediation/remediations.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ func Setup(c *checker.CheckRequest) error {
5555
}
5656
return
5757
}
58-
if b.Name != nil {
58+
59+
if b != nil && b.Name != nil {
5960
branch = *b.Name
6061
uri := c.Repo.URI()
6162
parts := strings.Split(uri, "/")

0 commit comments

Comments
 (0)