Skip to content

Commit d00e90f

Browse files
author
Patrick Robinson
authored
Merge pull request #57 from envato/dont-decode-policy
Dont decode S3 Bucket policies
2 parents 87c4e01 + 59eac9c commit d00e90f

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

iamy/aws.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func (a *AwsFetcher) fetchS3Data() error {
9292
continue
9393
}
9494

95-
policyDoc, err := NewPolicyDocumentFromEncodedJson(b.policyJson)
95+
policyDoc, err := NewPolicyDocumentFromJson(b.policyJson)
9696
if err != nil {
9797
return errors.Wrap(err, "Error creating Policy document")
9898
}

iamy/policy.go

+11-6
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,23 @@ import (
88
"sort"
99
)
1010

11-
func NewPolicyDocumentFromEncodedJson(encoded string) (*PolicyDocument, error) {
12-
jsonString, err := url.QueryUnescape(encoded)
13-
if err != nil {
11+
func NewPolicyDocumentFromJson(jsonString string) (*PolicyDocument, error) {
12+
var doc PolicyDocument
13+
if err := json.Unmarshal([]byte(jsonString), &doc); err != nil {
14+
log.Printf("Error unmarshalling JSON %s %s", err, jsonString)
1415
return nil, err
1516
}
1617

17-
var doc PolicyDocument
18-
if err = json.Unmarshal([]byte(jsonString), &doc); err != nil {
18+
return &doc, nil
19+
}
20+
21+
func NewPolicyDocumentFromEncodedJson(encoded string) (*PolicyDocument, error) {
22+
jsonString, err := url.QueryUnescape(encoded)
23+
if err != nil {
1924
return nil, err
2025
}
2126

22-
return &doc, nil
27+
return NewPolicyDocumentFromJson(jsonString)
2328
}
2429

2530
// PolicyDocument represents an AWS policy document.

iamy/policy_test.go

+7
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,10 @@ Actual: %#v`, nt.description, nt.input, nt.expected, result)
126126
}
127127
}
128128
}
129+
130+
func TestNewPolicyDocumentFromJson(t *testing.T) {
131+
_, err := NewPolicyDocumentFromJson(`{"Version":"2012-10-17","Id":"AllowPublicRead","Statement":[{"Sid":"PublicReadBucketObjects","Effect":"Allow","Principal":"*","Action":"s3:GetObject","Resource":"arn:aws:s3:::example.com/*","Condition":{"StringEquals":{"aws:Referer":"%zz"}}}]}`)
132+
if err != nil {
133+
t.Errorf("Error decoding policy %s", err)
134+
}
135+
}

0 commit comments

Comments
 (0)