From 83550d102d81761c27b6cf1da69465b6e3519214 Mon Sep 17 00:00:00 2001 From: Juergen Hoetzel Date: Sun, 5 Jul 2020 18:41:07 +0200 Subject: [PATCH 1/2] Trim to 255 runes instead of bytes Prevents invalid UTF-8 encoding for Description and Website. Refs #7905 --- models/repo.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/models/repo.go b/models/repo.go index c7d2ef467c8cd..b9f8a3321ad98 100644 --- a/models/repo.go +++ b/models/repo.go @@ -11,6 +11,7 @@ import ( "errors" "fmt" "html/template" + "unicode/utf8" // Needed for jpeg support _ "image/jpeg" @@ -1394,11 +1395,11 @@ func GetRepositoriesByForkID(forkID int64) ([]*Repository, error) { func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) { repo.LowerName = strings.ToLower(repo.Name) - if len(repo.Description) > 255 { - repo.Description = repo.Description[:255] + if utf8.RuneCountInString(repo.Description) > 255 { + repo.Description = string([]rune(repo.Description))[:255] } - if len(repo.Website) > 255 { - repo.Website = repo.Website[:255] + if utf8.RuneCountInString(repo.Website) > 255 { + repo.Website = string([]rune(repo.Website))[:255] } if _, err = e.ID(repo.ID).AllCols().Update(repo); err != nil { From 73066c9cd175b0f6536f2e6152c5ee9e70aa8e5c Mon Sep 17 00:00:00 2001 From: techknowlogick Date: Sun, 5 Jul 2020 15:18:44 -0400 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: zeripath --- models/repo.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/repo.go b/models/repo.go index b9f8a3321ad98..c98459b10bc6c 100644 --- a/models/repo.go +++ b/models/repo.go @@ -1396,10 +1396,10 @@ func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err e repo.LowerName = strings.ToLower(repo.Name) if utf8.RuneCountInString(repo.Description) > 255 { - repo.Description = string([]rune(repo.Description))[:255] + repo.Description = string([]rune(repo.Description)[:255]) } if utf8.RuneCountInString(repo.Website) > 255 { - repo.Website = string([]rune(repo.Website))[:255] + repo.Website = string([]rune(repo.Website)[:255]) } if _, err = e.ID(repo.ID).AllCols().Update(repo); err != nil {