From 424b962d845f813a187235371a291f34f8c46e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Mon, 10 Aug 2020 18:48:03 +0200 Subject: [PATCH] Ensure all pushed refs are UTF-8, lest the webapp 500 on reading the repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New push output: -- >8 -- nabijaczleweli@tarta:~/code/git.sr.ht/gitsrht-update-hook$ git push 'git@git.shi.rt:~nabijaczleweli/empty' HEAD:▒ HEAD:owo Enumerating objects: 34, done. Counting objects: 100% (34/34), done. Delta compression using up to 24 threads Compressing objects: 100% (23/23), done. Writing objects: 100% (23/23), 5.86 KiB | 1.95 MiB/s, done. Total 23 (delta 17), reused 0 (delta 0) remote: refs/heads/▒ not valid UTF-8, see https://github.com/libgit2/pygit2/issues/1028 for more information remote: error: hook declined to update refs/heads/▒ remote: Builds started: remote: http://127.0.0.1:5002/~nabijaczleweli/job/133 [alpine.yml] remote: http://127.0.0.1:5002/~nabijaczleweli/job/134 [archlinux.yml] remote: http://127.0.0.1:5002/~nabijaczleweli/job/135 [debian.yml] To git.shi.rt:~nabijaczleweli/empty * [new branch] HEAD -> owo ! [remote rejected] HEAD -> ▒ (hook declined) error: failed to push some refs to 'git@git.shi.rt:~nabijaczleweli/empty' -- >8 -- New log output: -- >8 -- hooks/pre-receive 2020/08/10 18:44:24 [hooks/pre-receive] hooks/pre-receive 2020/08/10 18:44:24 Running pre-receive for push 7c774348-3d6e-46fe-a613-ca344e079249 hooks/update 2020/08/10 18:44:24 [hooks/update refs/heads/▒ 0000000000000000000000000000000000000000 98d9b505ba528ccfccaba0605930bf1140648dbb] hooks/update 2020/08/10 18:44:24 Running update for push 7c774348-3d6e-46fe-a613-ca344e079249 hooks/update 2020/08/10 18:44:24 Refusing ref 'refs/heads/▒': not UTF-8 hooks/update 2020/08/10 18:44:24 [hooks/update refs/heads/owo 0000000000000000000000000000000000000000 98d9b505ba528ccfccaba0605930bf1140648dbb] hooks/update 2020/08/10 18:44:24 Running update for push 7c774348-3d6e-46fe-a613-ca344e079249 hooks/post-update 2020/08/10 18:44:24 [hooks/post-update refs/heads/owo] hooks/post-update 2020/08/10 18:44:24 Running post-update for push 7c774348-3d6e-46fe-a613-ca344e079249 hooks/post-update 2020/08/10 18:44:24 Submitted 3 builds for refs/heads/owo hooks/post-update 2020/08/10 18:44:24 Skipping stage 3, no work -- >8 -- --- gitsrht-update-hook/update.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gitsrht-update-hook/update.go b/gitsrht-update-hook/update.go index 72c661a..6f9f179 100644 --- a/gitsrht-update-hook/update.go +++ b/gitsrht-update-hook/update.go @@ -2,8 +2,10 @@ package main import ( "fmt" + "log" "os" "time" + "unicode/utf8" goredis "github.com/go-redis/redis" ) @@ -22,6 +24,12 @@ func update() { } logger.Printf("Running update for push %s", pushUuid) + if !utf8.ValidString(refname) { + logger.Printf("Refusing ref '%s': not UTF-8", refname) + log.Printf("%s not valid UTF-8, see https://github.com/libgit2/pygit2/issues/1028 for more information", refname); + os.Exit(1) + } + redisHost, ok := config.Get("sr.ht", "redis-host") if !ok { redisHost = "redis://localhost:6379" -- 2.38.4