Skip to content

Commit f6919e3

Browse files
GiteaBotearl-warren
authored andcommitted
Respect original content when creating secrets (go-gitea#24745) (go-gitea#24746)
Backport go-gitea#24745 by @wolfogre Fix go-gitea#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"> Co-authored-by: Jason Song <[email protected]> (cherry picked from commit e4f200e)
1 parent f37fba5 commit f6919e3

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

models/secret/secret.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func newSecret(ownerID, repoID int64, name, data string) *Secret {
5959

6060
// InsertEncryptedSecret Creates, encrypts, and validates a new secret with yet unencrypted data and insert into database
6161
func InsertEncryptedSecret(ctx context.Context, ownerID, repoID int64, name, data string) (*Secret, error) {
62-
encrypted, err := secret_module.EncryptSecret(setting.SecretKey, strings.TrimSpace(data))
62+
encrypted, err := secret_module.EncryptSecret(setting.SecretKey, data)
6363
if err != nil {
6464
return nil, err
6565
}

routers/web/shared/secrets/secrets.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package secrets
55

66
import (
77
"net/http"
8+
"strings"
89

910
"code.gitea.io/gitea/models/db"
1011
secret_model "code.gitea.io/gitea/models/secret"
@@ -27,7 +28,15 @@ func SetSecretsContext(ctx *context.Context, ownerID, repoID int64) {
2728
func PerformSecretsPost(ctx *context.Context, ownerID, repoID int64, redirectURL string) {
2829
form := web.GetForm(ctx).(*forms.AddSecretForm)
2930

30-
s, err := secret_model.InsertEncryptedSecret(ctx, ownerID, repoID, form.Title, form.Content)
31+
content := form.Content
32+
// Since the content is from a form which is a textarea, the line endings are \r\n.
33+
// It's a standard behavior of HTML.
34+
// But we want to store them as \n like what GitHub does.
35+
// And users are unlikely to really need to keep the \r.
36+
// Other than this, we should respect the original content, even leading or trailing spaces.
37+
content = strings.ReplaceAll(content, "\r\n", "\n")
38+
39+
s, err := secret_model.InsertEncryptedSecret(ctx, ownerID, repoID, form.Title, content)
3140
if err != nil {
3241
log.Error("InsertEncryptedSecret: %v", err)
3342
ctx.Flash.Error(ctx.Tr("secrets.creation.failed"))

0 commit comments

Comments
 (0)