Skip to content

Commit

Permalink
Add length check to github signature
Browse files Browse the repository at this point in the history
Signed-off-by: AdamKorcz <adam@adalogics.com>
  • Loading branch information
AdamKorcz committed Nov 29, 2023
1 parent 53694f8 commit f4db242
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
5 changes: 4 additions & 1 deletion github/github.go
Expand Up @@ -21,6 +21,7 @@ var (
ErrEventNotFound = errors.New("event not defined to be parsed")
ErrParsingPayload = errors.New("error parsing payload")
ErrHMACVerificationFailed = errors.New("HMAC verification failed")
ErrWrongHubSignatureHeader = errors.New("Invalid Github signature")
)

// Event defines a GitHub hook event type
Expand Down Expand Up @@ -166,7 +167,9 @@ func (hook Webhook) Parse(r *http.Request, events ...Event) (interface{}, error)
}

signature = strings.TrimPrefix(signature, "sha256=")

if len(signature) < 6 {
return nil, ErrWrongHubSignatureHeader
}
mac := hmac.New(sha256.New, []byte(hook.secret))
_, _ = mac.Write(payload)
expectedMAC := hex.EncodeToString(mac.Sum(nil))
Expand Down
9 changes: 9 additions & 0 deletions github/github_test.go
Expand Up @@ -58,6 +58,15 @@ func TestBadRequests(t *testing.T) {
payload io.Reader
headers http.Header
}{
{
name: "ShortSignature",
event: CommitCommentEvent,
payload: bytes.NewBuffer([]byte("{12345}")),
headers: http.Header{
"X-Github-Event": []string{"commit_comment"},
"X-Hub-Signature": []string{"sha1"},
},
},
{
name: "BadNoEventHeader",
event: CreateEvent,
Expand Down

0 comments on commit f4db242

Please sign in to comment.