summaryrefslogtreecommitdiffstats
path: root/routers/repo
diff options
context:
space:
mode:
authorleonklingele <5585491+leonklingele@users.noreply.github.com>2019-07-06 19:03:13 +0200
committertechknowlogick <techknowlogick@gitea.io>2019-07-06 13:03:13 -0400
commitef57fe4ae3c517a0bb10b81a641fb76976f404d3 (patch)
tree7fdfcc4dd36e5ec89082e5fe87560b4bc9d8f2c0 /routers/repo
parent96b66e330b9a592093799a50219c8118de6951eb (diff)
downloadgitea-ef57fe4ae3c517a0bb10b81a641fb76976f404d3.tar.gz
gitea-ef57fe4ae3c517a0bb10b81a641fb76976f404d3.zip
routers: do not leak secrets via timing side channel (#7364)
* routers: do not leak secrets via timing side channel * routers/repo: do not leak secrets via timing side channel
Diffstat (limited to 'routers/repo')
-rw-r--r--routers/repo/pull.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/routers/repo/pull.go b/routers/repo/pull.go
index 4c377bb364..cb4fa9547e 100644
--- a/routers/repo/pull.go
+++ b/routers/repo/pull.go
@@ -8,6 +8,7 @@ package repo
import (
"container/list"
+ "crypto/subtle"
"fmt"
"io"
"path"
@@ -771,7 +772,9 @@ func TriggerTask(ctx *context.Context) {
if ctx.Written() {
return
}
- if secret != base.EncodeMD5(owner.Salt) {
+ got := []byte(base.EncodeMD5(owner.Salt))
+ want := []byte(secret)
+ if subtle.ConstantTimeCompare(got, want) != 1 {
ctx.Error(404)
log.Trace("TriggerTask [%s/%s]: invalid secret", owner.Name, repo.Name)
return