mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Respect original content when creating secrets (#24745)
Fix #24721. Follow what GitHub does: - Don't trim spaces for secrets. - Newline should be `\n` instead of `\r\n`. Did some tests with: ```yaml name: secrets on: push jobs: show_secrets: runs-on: ubuntu-latest steps: - name: Dump secrets context run: echo '${{ toJSON(secrets) }}' | base64 ``` `AAAAAA`: ```text AAAAAA AAAAAA ``` `BBBBBB`: ```text BBBBBB BBBBBB ``` On GitHub: <img width="675" alt="image" src="https://github.com/go-gitea/gitea/assets/9418365/0ec60652-c2a3-47bb-9f9d-7e81665355a8"> On Gitea (before): <img width="673" alt="image" src="https://github.com/go-gitea/gitea/assets/9418365/cce818bf-5edc-4656-86e1-2c81c304cdb2"> On Gitea (after): <img width="673" alt="image" src="https://github.com/go-gitea/gitea/assets/9418365/0b3b15af-4d48-4bab-a334-4738a1b0eb4a">
This commit is contained in:
		@@ -5,6 +5,7 @@ package secrets
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	secret_model "code.gitea.io/gitea/models/secret"
 | 
			
		||||
@@ -27,7 +28,15 @@ func SetSecretsContext(ctx *context.Context, ownerID, repoID int64) {
 | 
			
		||||
func PerformSecretsPost(ctx *context.Context, ownerID, repoID int64, redirectURL string) {
 | 
			
		||||
	form := web.GetForm(ctx).(*forms.AddSecretForm)
 | 
			
		||||
 | 
			
		||||
	s, err := secret_model.InsertEncryptedSecret(ctx, ownerID, repoID, form.Title, form.Content)
 | 
			
		||||
	content := form.Content
 | 
			
		||||
	// Since the content is from a form which is a textarea, the line endings are \r\n.
 | 
			
		||||
	// It's a standard behavior of HTML.
 | 
			
		||||
	// But we want to store them as \n like what GitHub does.
 | 
			
		||||
	// And users are unlikely to really need to keep the \r.
 | 
			
		||||
	// Other than this, we should respect the original content, even leading or trailing spaces.
 | 
			
		||||
	content = strings.ReplaceAll(content, "\r\n", "\n")
 | 
			
		||||
 | 
			
		||||
	s, err := secret_model.InsertEncryptedSecret(ctx, ownerID, repoID, form.Title, content)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error("InsertEncryptedSecret: %v", err)
 | 
			
		||||
		ctx.Flash.Error(ctx.Tr("secrets.creation.failed"))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user