mirror of
https://github.com/go-gitea/gitea.git
synced 2026-01-10 06:07:19 +01:00
The code incorrectly assumed rel.Assets.Links and rel.Assets.Sources arrays have equal length. This causes index out of bounds panic when migrating GitLab releases with more links than sources, which is common with GoReleaser-generated releases. Fixes #36292 --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
// Copyright 2019 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package migration
|
|
|
|
import (
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
// ReleaseAsset represents a release asset
|
|
type ReleaseAsset struct {
|
|
ID int64
|
|
Name string
|
|
|
|
// There was a field "ContentType (content_type)" because Some forges can provide that for assets,
|
|
// but we don't need it when migrating, so the field is omitted here.
|
|
|
|
Size *int
|
|
DownloadCount *int `yaml:"download_count"`
|
|
Created time.Time
|
|
Updated time.Time
|
|
|
|
DownloadURL *string `yaml:"download_url"` // SECURITY: It is the responsibility of downloader to make sure this is safe
|
|
// if DownloadURL is nil, the function should be invoked
|
|
DownloadFunc func() (io.ReadCloser, error) `yaml:"-"` // SECURITY: It is the responsibility of downloader to make sure this is safe
|
|
}
|
|
|
|
// Release represents a release
|
|
type Release struct {
|
|
TagName string `yaml:"tag_name"` // SECURITY: This must pass git.IsValidRefPattern
|
|
TargetCommitish string `yaml:"target_commitish"` // SECURITY: This must pass git.IsValidRefPattern
|
|
Name string
|
|
Body string
|
|
Draft bool
|
|
Prerelease bool
|
|
PublisherID int64 `yaml:"publisher_id"`
|
|
PublisherName string `yaml:"publisher_name"`
|
|
PublisherEmail string `yaml:"publisher_email"`
|
|
Assets []*ReleaseAsset
|
|
Created time.Time
|
|
Published time.Time
|
|
}
|
|
|
|
// GetExternalName ExternalUserMigrated interface
|
|
func (r *Release) GetExternalName() string { return r.PublisherName }
|
|
|
|
// GetExternalID ExternalUserMigrated interface
|
|
func (r *Release) GetExternalID() int64 { return r.PublisherID }
|