From 0e2e8e54ab85889d3c42cf8b0744c3253065983b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 09:51:42 +0000 Subject: [PATCH] [chore]: Bump github.com/ncruces/go-sqlite3 from 0.23.0 to 0.24.0 (#3862) Bumps [github.com/ncruces/go-sqlite3](https://github.com/ncruces/go-sqlite3) from 0.23.0 to 0.24.0. - [Release notes](https://github.com/ncruces/go-sqlite3/releases) - [Commits](https://github.com/ncruces/go-sqlite3/compare/v0.23.0...v0.24.0) --- updated-dependencies: - dependency-name: github.com/ncruces/go-sqlite3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 +- go.sum | 8 +-- .../github.com/ncruces/go-sqlite3/.gitignore | 12 +++-- .../github.com/ncruces/go-sqlite3/README.md | 4 +- .../github.com/ncruces/go-sqlite3/config.go | 4 +- vendor/github.com/ncruces/go-sqlite3/conn.go | 21 +++++--- .../ncruces/go-sqlite3/conn_iter.go | 11 ---- .../github.com/ncruces/go-sqlite3/conn_old.go | 9 ---- vendor/github.com/ncruces/go-sqlite3/const.go | 5 +- .../ncruces/go-sqlite3/embed/README.md | 2 +- .../ncruces/go-sqlite3/embed/exports.txt | 1 + .../ncruces/go-sqlite3/embed/sqlite3.wasm | Bin 1397089 -> 1397228 bytes vendor/github.com/ncruces/go-sqlite3/func.go | 41 ++++++++------ .../go-sqlite3/internal/util/compiler.go | 27 ---------- .../ncruces/go-sqlite3/internal/util/mem.go | 15 ++++-- .../github.com/ncruces/go-sqlite3/sqlite.go | 9 +--- .../github.com/ncruces/go-sqlite3/vfs/cksm.go | 11 ++-- .../ncruces/go-sqlite3/vfs/const.go | 3 ++ .../github.com/ncruces/go-sqlite3/vfs/file.go | 23 ++++++-- .../ncruces/go-sqlite3/vfs/os_std_rw.go | 13 +++++ .../ncruces/go-sqlite3/vfs/os_unix.go | 22 ++++++++ .../ncruces/go-sqlite3/vfs/os_windows.go | 17 ++++++ .../github.com/ncruces/go-sqlite3/vfs/vfs.go | 51 +++++------------- vendor/github.com/ncruces/go-sqlite3/vtab.go | 4 +- vendor/golang.org/x/crypto/ssh/handshake.go | 47 ++++++++++++---- vendor/modules.txt | 6 +-- 26 files changed, 215 insertions(+), 155 deletions(-) delete mode 100644 vendor/github.com/ncruces/go-sqlite3/conn_iter.go delete mode 100644 vendor/github.com/ncruces/go-sqlite3/conn_old.go delete mode 100644 vendor/github.com/ncruces/go-sqlite3/internal/util/compiler.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go diff --git a/go.mod b/go.mod index f05c4dbb9..72c3f997e 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,7 @@ require ( github.com/miekg/dns v1.1.63 github.com/minio/minio-go/v7 v7.0.85 github.com/mitchellh/mapstructure v1.5.0 - github.com/ncruces/go-sqlite3 v0.23.0 + github.com/ncruces/go-sqlite3 v0.24.0 github.com/oklog/ulid v1.3.1 github.com/prometheus/client_golang v1.20.5 github.com/rivo/uniseg v0.4.7 @@ -81,7 +81,7 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.34.0 go.opentelemetry.io/otel/trace v1.34.0 go.uber.org/automaxprocs v1.6.0 - golang.org/x/crypto v0.34.0 + golang.org/x/crypto v0.35.0 golang.org/x/image v0.24.0 golang.org/x/net v0.35.0 golang.org/x/oauth2 v0.27.0 diff --git a/go.sum b/go.sum index 98d4b9bed..5b04a3fb6 100644 --- a/go.sum +++ b/go.sum @@ -323,8 +323,8 @@ github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/ncruces/go-sqlite3 v0.23.0 h1:90j/ar8Ywu2AtsfDl5WhO9sgP/rNk76BcKGIzAHO8AQ= -github.com/ncruces/go-sqlite3 v0.23.0/go.mod h1:gq2nriHSczOs11SqGW5+0X+SgLdkdj4K+j4F/AhQ+8g= +github.com/ncruces/go-sqlite3 v0.24.0 h1:Z4jfmzu2NCd4SmyFwLT2OmF3EnTZbqwATvdiuNHNhLA= +github.com/ncruces/go-sqlite3 v0.24.0/go.mod h1:/Vs8ACZHjJ1SA6E9RZUn3EyB1OP3nDQ4z/ar+0fplTQ= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M= @@ -529,8 +529,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.34.0 h1:+/C6tk6rf/+t5DhUketUbD1aNGqiSX3j15Z6xuIDlBA= -golang.org/x/crypto v0.34.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ= diff --git a/vendor/github.com/ncruces/go-sqlite3/.gitignore b/vendor/github.com/ncruces/go-sqlite3/.gitignore index 9a50edc5c..e7fe47155 100644 --- a/vendor/github.com/ncruces/go-sqlite3/.gitignore +++ b/vendor/github.com/ncruces/go-sqlite3/.gitignore @@ -5,9 +5,6 @@ *.so *.dylib -# Go workspace -go.work* - # Test binary, built with `go test -c` *.test @@ -16,4 +13,11 @@ go.work* # Dependency directories (remove the comment below to include it) # vendor/ -tools \ No newline at end of file +tools + +# Go workspace file +go.work +go.work.sum + +# env file +.env \ No newline at end of file diff --git a/vendor/github.com/ncruces/go-sqlite3/README.md b/vendor/github.com/ncruces/go-sqlite3/README.md index 7591f3cb3..cac6ee6b8 100644 --- a/vendor/github.com/ncruces/go-sqlite3/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/README.md @@ -98,7 +98,7 @@ Also, post there if you used this driver for something interesting ([_"Show and tell"_](https://github.com/ncruces/go-sqlite3/discussions/categories/show-and-tell)), have an [idea](https://github.com/ncruces/go-sqlite3/discussions/categories/ideas)… -The [Issue](https://github.com/ncruces/go-sqlite3/issues) tracker is for bugs we want fixed, +The [Issue](https://github.com/ncruces/go-sqlite3/issues) tracker is for bugs, and features we're working on, planning to work on, or asking for help with. ### Alternatives @@ -106,4 +106,4 @@ and features we're working on, planning to work on, or asking for help with. - [`modernc.org/sqlite`](https://pkg.go.dev/modernc.org/sqlite) - [`crawshaw.io/sqlite`](https://pkg.go.dev/crawshaw.io/sqlite) - [`github.com/mattn/go-sqlite3`](https://pkg.go.dev/github.com/mattn/go-sqlite3) -- [`github.com/zombiezen/go-sqlite`](https://pkg.go.dev/github.com/zombiezen/go-sqlite) +- [`github.com/zombiezen/go-sqlite`](https://pkg.go.dev/github.com/zombiezen/go-sqlite) \ No newline at end of file diff --git a/vendor/github.com/ncruces/go-sqlite3/config.go b/vendor/github.com/ncruces/go-sqlite3/config.go index 7fff6ead3..17166b9c5 100644 --- a/vendor/github.com/ncruces/go-sqlite3/config.go +++ b/vendor/github.com/ncruces/go-sqlite3/config.go @@ -45,7 +45,7 @@ func (c *Conn) Config(op DBConfig, arg ...bool) (bool, error) { rc := res_t(c.call("sqlite3_db_config", stk_t(c.handle), stk_t(op), stk_t(argsPtr))) - return util.Read32[uint32](c.mod, argsPtr) != 0, c.error(rc) + return util.ReadBool(c.mod, argsPtr), c.error(rc) } // ConfigLog sets up the error logging callback for the connection. @@ -116,7 +116,7 @@ func (c *Conn) FileControl(schema string, op FcntlOpcode, arg ...any) (any, erro rc = res_t(c.call("sqlite3_file_control", stk_t(c.handle), stk_t(schemaPtr), stk_t(op), stk_t(ptr))) - ret = util.Read32[uint32](c.mod, ptr) != 0 + ret = util.ReadBool(c.mod, ptr) case FCNTL_CHUNK_SIZE: util.Write32(c.mod, ptr, int32(arg[0].(int))) diff --git a/vendor/github.com/ncruces/go-sqlite3/conn.go b/vendor/github.com/ncruces/go-sqlite3/conn.go index fffc7416a..9f9251e9f 100644 --- a/vendor/github.com/ncruces/go-sqlite3/conn.go +++ b/vendor/github.com/ncruces/go-sqlite3/conn.go @@ -3,6 +3,7 @@ import ( "context" "fmt" + "iter" "math" "math/rand" "net/url" @@ -492,9 +493,9 @@ func (c *Conn) TableColumnMetadata(schema, table, column string) (declType, coll if ptr := util.Read32[ptr_t](c.mod, collSeqPtr); ptr != 0 { collSeq = util.ReadString(c.mod, ptr, _MAX_NAME) } - notNull = util.Read32[uint32](c.mod, notNullPtr) != 0 - autoInc = util.Read32[uint32](c.mod, autoIncPtr) != 0 - primaryKey = util.Read32[uint32](c.mod, primaryKeyPtr) != 0 + notNull = util.ReadBool(c.mod, notNullPtr) + autoInc = util.ReadBool(c.mod, autoIncPtr) + primaryKey = util.ReadBool(c.mod, primaryKeyPtr) } return } @@ -503,10 +504,16 @@ func (c *Conn) error(rc res_t, sql ...string) error { return c.sqlite.error(rc, c.handle, sql...) } -func (c *Conn) stmtsIter(yield func(*Stmt) bool) { - for _, s := range c.stmts { - if !yield(s) { - break +// Stmts returns an iterator for the prepared statements +// associated with the database connection. +// +// https://sqlite.org/c3ref/next_stmt.html +func (c *Conn) Stmts() iter.Seq[*Stmt] { + return func(yield func(*Stmt) bool) { + for _, s := range c.stmts { + if !yield(s) { + break + } } } } diff --git a/vendor/github.com/ncruces/go-sqlite3/conn_iter.go b/vendor/github.com/ncruces/go-sqlite3/conn_iter.go deleted file mode 100644 index 470f0ade2..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/conn_iter.go +++ /dev/null @@ -1,11 +0,0 @@ -//go:build go1.23 - -package sqlite3 - -import "iter" - -// Stmts returns an iterator for the prepared statements -// associated with the database connection. -// -// https://sqlite.org/c3ref/next_stmt.html -func (c *Conn) Stmts() iter.Seq[*Stmt] { return c.stmtsIter } diff --git a/vendor/github.com/ncruces/go-sqlite3/conn_old.go b/vendor/github.com/ncruces/go-sqlite3/conn_old.go deleted file mode 100644 index 4663fa04d..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/conn_old.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build !go1.23 - -package sqlite3 - -// Stmts returns an iterator for the prepared statements -// associated with the database connection. -// -// https://sqlite.org/c3ref/next_stmt.html -func (c *Conn) Stmts() func(func(*Stmt) bool) { return c.stmtsIter } diff --git a/vendor/github.com/ncruces/go-sqlite3/const.go b/vendor/github.com/ncruces/go-sqlite3/const.go index 086902a6c..82d80515e 100644 --- a/vendor/github.com/ncruces/go-sqlite3/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/const.go @@ -259,7 +259,10 @@ DBCONFIG_TRUSTED_SCHEMA DBConfig = 1017 DBCONFIG_STMT_SCANSTATUS DBConfig = 1018 DBCONFIG_REVERSE_SCANORDER DBConfig = 1019 - // DBCONFIG_MAX DBConfig = 1019 + DBCONFIG_ENABLE_ATTACH_CREATE DBConfig = 1020 + DBCONFIG_ENABLE_ATTACH_WRITE DBConfig = 1021 + DBCONFIG_ENABLE_COMMENTS DBConfig = 1022 + // DBCONFIG_MAX DBConfig = 1022 ) // FcntlOpcode are the available opcodes for [Conn.FileControl]. diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/README.md b/vendor/github.com/ncruces/go-sqlite3/embed/README.md index 59329a917..765c4b685 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/embed/README.md @@ -1,6 +1,6 @@ # Embeddable Wasm build of SQLite -This folder includes an embeddable Wasm build of SQLite 3.49.0 for use with +This folder includes an embeddable Wasm build of SQLite 3.49.1 for use with [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3). The following optional features are compiled in: diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt b/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt index 597c79547..84d6102b8 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt +++ b/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt @@ -80,6 +80,7 @@ sqlite3_interrupt sqlite3_invoke_busy_handler_go sqlite3_last_insert_rowid sqlite3_limit +sqlite3_log_go sqlite3_malloc64 sqlite3_open_v2 sqlite3_overload_function diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm b/vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm index e61dc9356ab014ca91e7b68094f134df1ce56807..713fc06758f7efc042ac58ea3cd58f80c2d426f7 100644 GIT binary patch delta 86187 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 delta 86249 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 diff --git a/vendor/github.com/ncruces/go-sqlite3/func.go b/vendor/github.com/ncruces/go-sqlite3/func.go index 6b69368b4..f907fa940 100644 --- a/vendor/github.com/ncruces/go-sqlite3/func.go +++ b/vendor/github.com/ncruces/go-sqlite3/func.go @@ -2,6 +2,7 @@ import ( "context" + "io" "sync" "github.com/tetratelabs/wazero/api" @@ -85,12 +86,18 @@ func (c *Conn) CreateWindowFunction(name string, nArg int, flag FunctionFlag, fn var funcPtr ptr_t defer c.arena.mark()() namePtr := c.arena.string(name) - if fn != nil { - funcPtr = util.AddHandle(c.ctx, fn) - } call := "sqlite3_create_aggregate_function_go" - if _, ok := fn().(WindowFunction); ok { - call = "sqlite3_create_window_function_go" + if fn != nil { + agg := fn() + if c, ok := agg.(io.Closer); ok { + if err := c.Close(); err != nil { + return err + } + } + if _, ok := agg.(WindowFunction); ok { + call = "sqlite3_create_window_function_go" + } + funcPtr = util.AddHandle(c.ctx, fn) } rc := res_t(c.call(call, stk_t(c.handle), stk_t(namePtr), stk_t(nArg), @@ -168,20 +175,24 @@ func stepCallback(ctx context.Context, mod api.Module, pCtx, pAgg, pApp ptr_t, n fn.Step(Context{db, pCtx}, args[:nArg]...) } -func finalCallback(ctx context.Context, mod api.Module, pCtx, pAgg, pApp ptr_t) { +func valueCallback(ctx context.Context, mod api.Module, pCtx, pAgg, pApp ptr_t, final int32) { db := ctx.Value(connKey{}).(*Conn) fn, handle := callbackAggregate(db, pAgg, pApp) fn.Value(Context{db, pCtx}) - if err := util.DelHandle(ctx, handle); err != nil { - Context{db, pCtx}.ResultError(err) - return // notest - } -} -func valueCallback(ctx context.Context, mod api.Module, pCtx, pAgg ptr_t) { - db := ctx.Value(connKey{}).(*Conn) - fn := util.GetHandle(db.ctx, pAgg).(AggregateFunction) - fn.Value(Context{db, pCtx}) + // Cleanup. + if final != 0 { + var err error + if handle != 0 { + err = util.DelHandle(ctx, handle) + } else if c, ok := fn.(io.Closer); ok { + err = c.Close() + } + if err != nil { + Context{db, pCtx}.ResultError(err) + return // notest + } + } } func inverseCallback(ctx context.Context, mod api.Module, pCtx, pAgg ptr_t, nArg int32, pArg ptr_t) { diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/compiler.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/compiler.go deleted file mode 100644 index aeefcced9..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/compiler.go +++ /dev/null @@ -1,27 +0,0 @@ -package util - -import ( - "runtime" - - "golang.org/x/sys/cpu" -) - -func CompilerSupported() bool { - switch runtime.GOOS { - case "linux", "android", - "windows", "darwin", - "freebsd", "netbsd", "dragonfly", - "solaris", "illumos": - break - default: - return false - } - switch runtime.GOARCH { - case "amd64": - return cpu.X86.HasSSE41 - case "arm64": - return true - default: - return false - } -} diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go index bfb1a6440..d2fea08b4 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go @@ -26,9 +26,6 @@ func View(mod api.Module, ptr Ptr_t, size int64) []byte { if ptr == 0 { panic(NilErr) } - if size == 0 { - return nil - } if uint64(size) > math.MaxUint32 { panic(RangeErr) } @@ -110,6 +107,18 @@ func WriteFloat64(mod api.Module, ptr Ptr_t, v float64) { Write64(mod, ptr, math.Float64bits(v)) } +func ReadBool(mod api.Module, ptr Ptr_t) bool { + return Read32[int32](mod, ptr) != 0 +} + +func WriteBool(mod api.Module, ptr Ptr_t, v bool) { + var i int32 + if v { + i = 1 + } + Write32(mod, ptr, i) +} + func ReadString(mod api.Module, ptr Ptr_t, maxlen int64) string { if ptr == 0 { panic(NilErr) diff --git a/vendor/github.com/ncruces/go-sqlite3/sqlite.go b/vendor/github.com/ncruces/go-sqlite3/sqlite.go index 8203603e7..9e2d1d381 100644 --- a/vendor/github.com/ncruces/go-sqlite3/sqlite.go +++ b/vendor/github.com/ncruces/go-sqlite3/sqlite.go @@ -47,11 +47,7 @@ func compileSQLite() { ctx := context.Background() cfg := RuntimeConfig if cfg == nil { - if util.CompilerSupported() { - cfg = wazero.NewRuntimeConfigCompiler() - } else { - cfg = wazero.NewRuntimeConfigInterpreter() - } + cfg = wazero.NewRuntimeConfig() if bits.UintSize < 64 { cfg = cfg.WithMemoryLimitPages(512) // 32MB } else { @@ -321,8 +317,7 @@ func exportCallbacks(env wazero.HostModuleBuilder) wazero.HostModuleBuilder { util.ExportFuncVI(env, "go_destroy", destroyCallback) util.ExportFuncVIIII(env, "go_func", funcCallback) util.ExportFuncVIIIII(env, "go_step", stepCallback) - util.ExportFuncVIII(env, "go_final", finalCallback) - util.ExportFuncVII(env, "go_value", valueCallback) + util.ExportFuncVIIII(env, "go_value", valueCallback) util.ExportFuncVIIII(env, "go_inverse", inverseCallback) util.ExportFuncVIIII(env, "go_collation_needed", collationCallback) util.ExportFuncIIIIII(env, "go_compare", compareCallback) diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/cksm.go b/vendor/github.com/ncruces/go-sqlite3/vfs/cksm.go index 39493df99..041defec3 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/cksm.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/cksm.go @@ -47,11 +47,12 @@ type cksmFlags struct { func (c cksmFile) ReadAt(p []byte, off int64) (n int, err error) { n, err = c.File.ReadAt(p, off) + p = p[:n] // SQLite is reading the header of a database file. if c.isDB && off == 0 && len(p) >= 100 && bytes.HasPrefix(p, []byte("SQLite format 3\000")) { - c.init(p) + c.init((*[100]byte)(p)) } // Verify checksums. @@ -69,7 +70,7 @@ func (c cksmFile) WriteAt(p []byte, off int64) (n int, err error) { // SQLite is writing the first page of a database file. if c.isDB && off == 0 && len(p) >= 100 && bytes.HasPrefix(p, []byte("SQLite format 3\000")) { - c.init(p) + c.init((*[100]byte)(p)) } // Compute checksums. @@ -122,12 +123,16 @@ func (c cksmFile) fileControl(ctx context.Context, mod api.Module, op _FcntlOpco return vfsFileControlImpl(ctx, mod, c.File, op, pArg) } -func (f *cksmFlags) init(header []byte) { +func (f *cksmFlags) init(header *[100]byte) { f.pageSize = 256 * int(binary.LittleEndian.Uint16(header[16:18])) if r := header[20] == 8; r != f.computeCksm { f.computeCksm = r f.verifyCksm = r } + if !sql3util.ValidPageSize(f.pageSize) { + f.computeCksm = false + f.verifyCksm = false + } } func cksmCompute(a []byte) (cksm [8]byte) { diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/const.go b/vendor/github.com/ncruces/go-sqlite3/vfs/const.go index dc3b0db83..b789d1203 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/const.go @@ -31,6 +31,7 @@ func (e _ErrorCode) Error() string { _READONLY _ErrorCode = util.READONLY _IOERR _ErrorCode = util.IOERR _NOTFOUND _ErrorCode = util.NOTFOUND + _FULL _ErrorCode = util.FULL _CANTOPEN _ErrorCode = util.CANTOPEN _IOERR_READ _ErrorCode = util.IOERR_READ _IOERR_SHORT_READ _ErrorCode = util.IOERR_SHORT_READ @@ -57,10 +58,12 @@ func (e _ErrorCode) Error() string { _IOERR_COMMIT_ATOMIC _ErrorCode = util.IOERR_COMMIT_ATOMIC _IOERR_ROLLBACK_ATOMIC _ErrorCode = util.IOERR_ROLLBACK_ATOMIC _IOERR_DATA _ErrorCode = util.IOERR_DATA + _IOERR_CORRUPTFS _ErrorCode = util.IOERR_CORRUPTFS _BUSY_SNAPSHOT _ErrorCode = util.BUSY_SNAPSHOT _CANTOPEN_FULLPATH _ErrorCode = util.CANTOPEN_FULLPATH _CANTOPEN_ISDIR _ErrorCode = util.CANTOPEN_ISDIR _READONLY_CANTINIT _ErrorCode = util.READONLY_CANTINIT + _READONLY_DIRECTORY _ErrorCode = util.READONLY_DIRECTORY _OK_SYMLINK _ErrorCode = util.OK_SYMLINK ) diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go index bc90555e7..0a3c9d622 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go @@ -88,10 +88,13 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error oflags |= os.O_RDWR } + isCreate := flags&(OPEN_CREATE) != 0 + isJournl := flags&(OPEN_MAIN_JOURNAL|OPEN_SUPER_JOURNAL|OPEN_WAL) != 0 + var err error var f *os.File if name == nil { - f, err = os.CreateTemp("", "*.db") + f, err = os.CreateTemp(os.Getenv("SQLITE_TMPDIR"), "*.db") } else { f, err = osutil.OpenFile(name.String(), oflags, 0666) } @@ -102,6 +105,10 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error if errors.Is(err, syscall.EISDIR) { return nil, flags, _CANTOPEN_ISDIR } + if isCreate && isJournl && errors.Is(err, fs.ErrPermission) && + osAccess(name.String(), ACCESS_EXISTS) != nil { + return nil, flags, _READONLY_DIRECTORY + } return nil, flags, err } @@ -119,10 +126,8 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error File: f, psow: true, readOnly: flags&OPEN_READONLY != 0, - syncDir: canSyncDirs && - flags&(OPEN_MAIN_JOURNAL|OPEN_SUPER_JOURNAL|OPEN_WAL) != 0 && - flags&(OPEN_CREATE) != 0, - shm: NewSharedMemory(name.String()+"-shm", flags), + syncDir: canSyncDirs && isCreate && isJournl, + shm: NewSharedMemory(name.String()+"-shm", flags), } return &file, flags, nil } @@ -154,6 +159,14 @@ func (f *vfsFile) Close() error { return f.File.Close() } +func (f *vfsFile) ReadAt(p []byte, off int64) (n int, err error) { + return osReadAt(f.File, p, off) +} + +func (f *vfsFile) WriteAt(p []byte, off int64) (n int, err error) { + return osWriteAt(f.File, p, off) +} + func (f *vfsFile) Sync(flags SyncFlag) error { dataonly := (flags & SYNC_DATAONLY) != 0 fullsync := (flags & 0x0f) == SYNC_FULL diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go new file mode 100644 index 000000000..40a5f270a --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go @@ -0,0 +1,13 @@ +//go:build !unix && (!windows || sqlite3_dotlk) + +package vfs + +import "os" + +func osReadAt(file *os.File, p []byte, off int64) (int, error) { + return file.ReadAt(p, off) +} + +func osWriteAt(file *os.File, p []byte, off int64) (int, error) { + return file.WriteAt(p, off) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go index c4f9ba870..9f42b5f6c 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go @@ -25,6 +25,28 @@ func osAccess(path string, flags AccessFlag) error { return unix.Access(path, access) } +func osReadAt(file *os.File, p []byte, off int64) (int, error) { + n, err := file.ReadAt(p, off) + if errno, ok := err.(unix.Errno); ok { + switch errno { + case + unix.ERANGE, + unix.EIO, + unix.ENXIO: + return n, _IOERR_CORRUPTFS + } + } + return n, err +} + +func osWriteAt(file *os.File, p []byte, off int64) (int, error) { + n, err := file.WriteAt(p, off) + if errno, ok := err.(unix.Errno); ok && errno == unix.ENOSPC { + return n, _FULL + } + return n, err +} + func osSetMode(file *os.File, modeof string) error { fi, err := os.Stat(modeof) if err != nil { diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go index 0398f4760..ecce3cfa2 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go @@ -9,6 +9,23 @@ "golang.org/x/sys/windows" ) +func osReadAt(file *os.File, p []byte, off int64) (int, error) { + return file.ReadAt(p, off) +} + +func osWriteAt(file *os.File, p []byte, off int64) (int, error) { + n, err := file.WriteAt(p, off) + if errno, ok := err.(windows.Errno); ok { + switch errno { + case + windows.ERROR_HANDLE_DISK_FULL, + windows.ERROR_DISK_FULL: + return n, _FULL + } + } + return n, err +} + func osGetSharedLock(file *os.File) _ErrorCode { // Acquire the PENDING lock temporarily before acquiring a new SHARED lock. rc := osReadLock(file, _PENDING_BYTE, 1, 0) diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go b/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go index ca105fff6..c70507caa 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go @@ -58,13 +58,8 @@ func vfsFind(ctx context.Context, mod api.Module, zVfsName ptr_t) uint32 { } func vfsLocaltime(ctx context.Context, mod api.Module, pTm ptr_t, t int64) _ErrorCode { - tm := time.Unix(t, 0) - var isdst int32 - if tm.IsDST() { - isdst = 1 - } - const size = 32 / 8 + tm := time.Unix(t, 0) // https://pubs.opengroup.org/onlinepubs/7908799/xsh/time.h.html util.Write32(mod, pTm+0*size, int32(tm.Second())) util.Write32(mod, pTm+1*size, int32(tm.Minute())) @@ -74,7 +69,7 @@ func vfsLocaltime(ctx context.Context, mod api.Module, pTm ptr_t, t int64) _Erro util.Write32(mod, pTm+5*size, int32(tm.Year()-1900)) util.Write32(mod, pTm+6*size, int32(tm.Weekday()-time.Sunday)) util.Write32(mod, pTm+7*size, int32(tm.YearDay()-1)) - util.Write32(mod, pTm+8*size, isdst) + util.WriteBool(mod, pTm+8*size, tm.IsDST()) return _OK } @@ -123,11 +118,7 @@ func vfsAccess(ctx context.Context, mod api.Module, pVfs, zPath ptr_t, flags Acc path := util.ReadString(mod, zPath, _MAX_PATHNAME) ok, err := vfs.Access(path, flags) - var res int32 - if ok { - res = 1 - } - util.Write32(mod, pResOut, res) + util.WriteBool(mod, pResOut, ok) return vfsErrorCode(err, _IOERR_ACCESS) } @@ -151,9 +142,8 @@ func vfsOpen(ctx context.Context, mod api.Module, pVfs, zPath, pFile ptr_t, flag file.SetPowersafeOverwrite(b) } } - if file, ok := file.(FileSharedMemory); ok && - pOutVFS != 0 && file.SharedMemory() != nil { - util.Write32(mod, pOutVFS, int32(1)) + if file, ok := file.(FileSharedMemory); ok && pOutVFS != 0 { + util.WriteBool(mod, pOutVFS, file.SharedMemory() != nil) } if pOutFlags != 0 { util.Write32(mod, pOutFlags, flags) @@ -225,12 +215,7 @@ func vfsUnlock(ctx context.Context, mod api.Module, pFile ptr_t, eLock LockLevel func vfsCheckReservedLock(ctx context.Context, mod api.Module, pFile, pResOut ptr_t) _ErrorCode { file := vfsFileGet(ctx, mod, pFile).(File) locked, err := file.CheckReservedLock() - - var res int32 - if locked { - res = 1 - } - util.Write32(mod, pResOut, res) + util.WriteBool(mod, pResOut, locked) return vfsErrorCode(err, _IOERR_CHECKRESERVEDLOCK) } @@ -254,24 +239,20 @@ func vfsFileControlImpl(ctx context.Context, mod api.Module, file File, op _Fcnt case _FCNTL_PERSIST_WAL: if file, ok := file.(FilePersistWAL); ok { - if i := util.Read32[int32](mod, pArg); i >= 0 { - file.SetPersistWAL(i != 0) - } else if file.PersistWAL() { - util.Write32(mod, pArg, int32(1)) + if i := util.Read32[int32](mod, pArg); i < 0 { + util.WriteBool(mod, pArg, file.PersistWAL()) } else { - util.Write32(mod, pArg, int32(0)) + file.SetPersistWAL(i != 0) } return _OK } case _FCNTL_POWERSAFE_OVERWRITE: if file, ok := file.(FilePowersafeOverwrite); ok { - if i := util.Read32[int32](mod, pArg); i >= 0 { - file.SetPowersafeOverwrite(i != 0) - } else if file.PowersafeOverwrite() { - util.Write32(mod, pArg, int32(1)) + if i := util.Read32[int32](mod, pArg); i < 0 { + util.WriteBool(mod, pArg, file.PowersafeOverwrite()) } else { - util.Write32(mod, pArg, int32(0)) + file.SetPowersafeOverwrite(i != 0) } return _OK } @@ -293,11 +274,7 @@ func vfsFileControlImpl(ctx context.Context, mod api.Module, file File, op _Fcnt case _FCNTL_HAS_MOVED: if file, ok := file.(FileHasMoved); ok { moved, err := file.HasMoved() - var val uint32 - if moved { - val = 1 - } - util.Write32(mod, pArg, val) + util.WriteBool(mod, pArg, moved) return vfsErrorCode(err, _IOERR_FSTAT) } @@ -394,7 +371,7 @@ func vfsFileControlImpl(ctx context.Context, mod api.Module, file File, op _Fcnt case _FCNTL_LOCK_TIMEOUT: if file, ok := file.(FileSharedMemory); ok { if shm, ok := file.SharedMemory().(blockingSharedMemory); ok { - shm.shmEnableBlocking(util.Read32[uint32](mod, pArg) != 0) + shm.shmEnableBlocking(util.ReadBool(mod, pArg)) return _OK } } diff --git a/vendor/github.com/ncruces/go-sqlite3/vtab.go b/vendor/github.com/ncruces/go-sqlite3/vtab.go index 278195e92..884aaaa0c 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vtab.go +++ b/vendor/github.com/ncruces/go-sqlite3/vtab.go @@ -399,10 +399,10 @@ func (idx *IndexInfo) save() { util.Write32(mod, ptr+20, int32(idx.IdxNum)) if idx.IdxStr != "" { util.Write32(mod, ptr+24, idx.c.newString(idx.IdxStr)) - util.Write32(mod, ptr+28, int32(1)) // needToFreeIdxStr + util.WriteBool(mod, ptr+28, true) // needToFreeIdxStr } if idx.OrderByConsumed { - util.Write32(mod, ptr+32, int32(1)) + util.WriteBool(mod, ptr+32, true) } util.WriteFloat64(mod, ptr+40, idx.EstimatedCost) util.Write64(mod, ptr+48, idx.EstimatedRows) diff --git a/vendor/golang.org/x/crypto/ssh/handshake.go b/vendor/golang.org/x/crypto/ssh/handshake.go index fef687db0..c9202b05d 100644 --- a/vendor/golang.org/x/crypto/ssh/handshake.go +++ b/vendor/golang.org/x/crypto/ssh/handshake.go @@ -25,6 +25,11 @@ // quickly. const chanSize = 16 +// maxPendingPackets sets the maximum number of packets to queue while waiting +// for KEX to complete. This limits the total pending data to maxPendingPackets +// * maxPacket bytes, which is ~16.8MB. +const maxPendingPackets = 64 + // keyingTransport is a packet based transport that supports key // changes. It need not be thread-safe. It should pass through // msgNewKeys in both directions. @@ -73,11 +78,19 @@ type handshakeTransport struct { incoming chan []byte readError error - mu sync.Mutex - writeError error - sentInitPacket []byte - sentInitMsg *kexInitMsg - pendingPackets [][]byte // Used when a key exchange is in progress. + mu sync.Mutex + // Condition for the above mutex. It is used to notify a completed key + // exchange or a write failure. Writes can wait for this condition while a + // key exchange is in progress. + writeCond *sync.Cond + writeError error + sentInitPacket []byte + sentInitMsg *kexInitMsg + // Used to queue writes when a key exchange is in progress. The length is + // limited by pendingPacketsSize. Once full, writes will block until the key + // exchange is completed or an error occurs. If not empty, it is emptied + // all at once when the key exchange is completed in kexLoop. + pendingPackets [][]byte writePacketsLeft uint32 writeBytesLeft int64 userAuthComplete bool // whether the user authentication phase is complete @@ -134,6 +147,7 @@ func newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, config: config, } + t.writeCond = sync.NewCond(&t.mu) t.resetReadThresholds() t.resetWriteThresholds() @@ -260,6 +274,7 @@ func (t *handshakeTransport) recordWriteError(err error) { defer t.mu.Unlock() if t.writeError == nil && err != nil { t.writeError = err + t.writeCond.Broadcast() } } @@ -363,6 +378,8 @@ func (t *handshakeTransport) kexLoop() { } } t.pendingPackets = t.pendingPackets[:0] + // Unblock writePacket if waiting for KEX. + t.writeCond.Broadcast() t.mu.Unlock() } @@ -577,11 +594,20 @@ func (t *handshakeTransport) writePacket(p []byte) error { } if t.sentInitMsg != nil { - // Copy the packet so the writer can reuse the buffer. - cp := make([]byte, len(p)) - copy(cp, p) - t.pendingPackets = append(t.pendingPackets, cp) - return nil + if len(t.pendingPackets) < maxPendingPackets { + // Copy the packet so the writer can reuse the buffer. + cp := make([]byte, len(p)) + copy(cp, p) + t.pendingPackets = append(t.pendingPackets, cp) + return nil + } + for t.sentInitMsg != nil { + // Block and wait for KEX to complete or an error. + t.writeCond.Wait() + if t.writeError != nil { + return t.writeError + } + } } if t.writeBytesLeft > 0 { @@ -598,6 +624,7 @@ func (t *handshakeTransport) writePacket(p []byte) error { if err := t.pushPacket(p); err != nil { t.writeError = err + t.writeCond.Broadcast() } return nil diff --git a/vendor/modules.txt b/vendor/modules.txt index df73b29d5..b75cf5d42 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -698,8 +698,8 @@ github.com/modern-go/reflect2 # github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 ## explicit github.com/munnerz/goautoneg -# github.com/ncruces/go-sqlite3 v0.23.0 -## explicit; go 1.22 +# github.com/ncruces/go-sqlite3 v0.24.0 +## explicit; go 1.23.0 github.com/ncruces/go-sqlite3 github.com/ncruces/go-sqlite3/driver github.com/ncruces/go-sqlite3/embed @@ -1057,7 +1057,7 @@ go.uber.org/multierr # golang.org/x/arch v0.13.0 ## explicit; go 1.18 golang.org/x/arch/x86/x86asm -# golang.org/x/crypto v0.34.0 +# golang.org/x/crypto v0.35.0 ## explicit; go 1.23.0 golang.org/x/crypto/acme golang.org/x/crypto/acme/autocert