Skip to content

Commit eec4e66

Browse files
committed
Use PathEscape
1 parent ed7d68d commit eec4e66

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

Diff for: dsn.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,7 @@ func (cfg *Config) FormatDSN() string {
202202

203203
// /dbname
204204
buf.WriteByte('/')
205-
dbNameEncoded := url.QueryEscape(cfg.DBName)
206-
buf.WriteString(dbNameEncoded)
205+
buf.WriteString(url.PathEscape(cfg.DBName))
207206

208207
// [?param1=value1&...&paramN=valueN]
209208
hasParam := false
@@ -366,9 +365,9 @@ func ParseDSN(dsn string) (cfg *Config, err error) {
366365
}
367366
}
368367

369-
dbName := dsn[i+1 : j]
370-
if cfg.DBName, err = url.QueryUnescape(dbName); err != nil {
371-
return nil, fmt.Errorf("invalid dbname '%s': %w", dbName, err)
368+
dbname := dsn[i+1 : j]
369+
if cfg.DBName, err = url.PathUnescape(dbname); err != nil {
370+
return nil, fmt.Errorf("invalid dbname %q: %w", dbname, err)
372371
}
373372

374373
break

Diff for: dsn_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ var testDSNs = []struct {
5252
&Config{Net: "tcp", Addr: "127.0.0.1:3306", DBName: "dbname", Collation: "utf8mb4_general_ci", Loc: time.UTC, MaxAllowedPacket: defaultMaxAllowedPacket, Logger: defaultLogger, AllowNativePasswords: true, CheckConnLiveness: true},
5353
}, {
5454
"/dbname%2Fwithslash",
55-
&Config{Net: "tcp", Addr: "127.0.0.1:3306", DBName: "dbname/withslash", Collation: "utf8mb4_general_ci", Loc: time.UTC, MaxAllowedPacket: defaultMaxAllowedPacket, AllowNativePasswords: true, CheckConnLiveness: true},
55+
&Config{Net: "tcp", Addr: "127.0.0.1:3306", DBName: "dbname/withslash", Collation: "utf8mb4_general_ci", Loc: time.UTC, MaxAllowedPacket: defaultMaxAllowedPacket, Logger: defaultLogger, AllowNativePasswords: true, CheckConnLiveness: true},
5656
}, {
5757
"@/",
5858
&Config{Net: "tcp", Addr: "127.0.0.1:3306", Collation: "utf8mb4_general_ci", Loc: time.UTC, MaxAllowedPacket: defaultMaxAllowedPacket, Logger: defaultLogger, AllowNativePasswords: true, CheckConnLiveness: true},

0 commit comments

Comments
 (0)