Browse Source

Trim to 255 runes instead of bytes (#12150)

* Trim to 255 runes instead of bytes

Prevents invalid UTF-8 encoding for Description and Website. Refs #7905

* Apply suggestions from code review

Co-authored-by: zeripath <art27@cantab.net>

Co-authored-by: techknowlogick <matti@mdranta.net>
Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: Lauris BH <lauris@nix.lv>
tags/v1.13.0-rc1
Jürgen Hötzel 3 years ago
parent
commit
30399cf04a
No account linked to committer's email address
1 changed files with 5 additions and 4 deletions
  1. 5
    4
      models/repo.go

+ 5
- 4
models/repo.go View File

@@ -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 {

Loading…
Cancel
Save