@@ -119,13 +119,29 @@ func (run *ActionRun) Duration() time.Duration {
119
119
120
120
func (run * ActionRun ) GetPushEventPayload () (* api.PushPayload , error ) {
121
121
if run .Event == webhook_module .HookEventPush {
122
- var payload api.PushPayload
123
- if err := json .Unmarshal ([]byte (run .EventPayload ), & payload ); err != nil {
124
- return nil , err
125
- }
126
- return & payload , nil
122
+ return nil , fmt .Errorf ("event %s is not a push event" , run .Event )
123
+ }
124
+
125
+ payload := & api.PushPayload {}
126
+ if err := json .Unmarshal ([]byte (run .EventPayload ), payload ); err != nil {
127
+ return nil , err
128
+ }
129
+
130
+ // Since it comes from json unmarshal, we should check if it's broken
131
+ if payload .HeadCommit == nil {
132
+ return nil , fmt .Errorf ("nil HeadCommit" )
133
+ }
134
+ if payload .Repo == nil {
135
+ return nil , fmt .Errorf ("nil Repo" )
136
+ }
137
+ if payload .Pusher == nil {
138
+ return nil , fmt .Errorf ("nil Pusher" )
127
139
}
128
- return nil , fmt .Errorf ("event %s is not a push event" , run .Event )
140
+ if payload .Sender == nil {
141
+ return nil , fmt .Errorf ("nil Sender" )
142
+ }
143
+
144
+ return payload , nil
129
145
}
130
146
131
147
func updateRepoRunsNumbers (ctx context.Context , repo * repo_model.Repository ) error {
0 commit comments