From: Matt Joiner Date: Tue, 26 Jan 2021 10:49:53 +0000 (+1100) Subject: Escape URI path X-Git-Tag: v1.22.0~11 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=fbc9a77cd8f0f2153562fdff2caecdcda93359d5;p=btrtrc.git Escape URI path --- diff --git a/storage/sqlite/sqlite-storage.go b/storage/sqlite/sqlite-storage.go index c53d9c67..5042be04 100644 --- a/storage/sqlite/sqlite-storage.go +++ b/storage/sqlite/sqlite-storage.go @@ -220,21 +220,22 @@ func NewPool(opts NewPoolOpts) (_ ConnPool, _ ProviderOpts, err error) { if opts.NumConns == 0 { opts.NumConns = runtime.NumCPU() } + path := url.PathEscape(opts.Path) if opts.Memory { - opts.Path = ":memory:" + path = ":memory:" } values := make(url.Values) if opts.NoConcurrentBlobReads || opts.Memory { values.Add("cache", "shared") } - path := fmt.Sprintf("file:%s?%s", opts.Path, values.Encode()) + uri := fmt.Sprintf("file:%s?%s", path, values.Encode()) conns, err := func() (ConnPool, error) { switch opts.NumConns { case 1: - conn, err := sqlite.OpenConn(path, 0) + conn, err := sqlite.OpenConn(uri, 0) return &poolFromConn{conn: conn}, err default: - return sqlitex.Open(path, 0, opts.NumConns) + return sqlitex.Open(uri, 0, opts.NumConns) } }() if err != nil {