diff options
author | 2024-08-30 17:02:24 +0200 | |
---|---|---|
committer | 2024-08-30 17:02:24 +0200 | |
commit | 1e0c858a05a627f76f3b6311e9e8ef35a654c161 (patch) | |
tree | 517c081a859ee61326f2d44582b276c3d1b469be /vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go | |
parent | [security] Implement `allowFiles` fs for better isolation of ffmpeg / ffprobe... (diff) | |
download | gotosocial-1e0c858a05a627f76f3b6311e9e8ef35a654c161.tar.xz |
[chore] Upgrade ncruces/go-sqlite3 to v0.18.1 (#3253)
Contains a fix for locking behaviour on the BSDs.
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go')
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go index 65674ed2e..089401156 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go @@ -121,8 +121,8 @@ func (s *vfsShm) shmOpen() (rc _ErrorCode) { // Find a shared file, increase the reference count. for _, g := range vfsShmFiles { if g != nil && os.SameFile(fi, g.info) { - g.refs++ s.vfsShmFile = g + g.refs++ return _OK } } @@ -207,15 +207,22 @@ func (s *vfsShm) shmLock(offset, n int32, flags _ShmFlag) _ErrorCode { case flags&_SHM_UNLOCK != 0: for i := offset; i < offset+n; i++ { if s.lock[i] { + if s.vfsShmFile.lock[i] == 0 { + panic(util.AssertErr()) + } if s.vfsShmFile.lock[i] <= 0 { s.vfsShmFile.lock[i] = 0 } else { s.vfsShmFile.lock[i]-- } + s.lock[i] = false } } case flags&_SHM_SHARED != 0: for i := offset; i < offset+n; i++ { + if s.lock[i] { + panic(util.AssertErr()) + } if s.vfsShmFile.lock[i] < 0 { return _BUSY } @@ -226,6 +233,9 @@ func (s *vfsShm) shmLock(offset, n int32, flags _ShmFlag) _ErrorCode { } case flags&_SHM_EXCLUSIVE != 0: for i := offset; i < offset+n; i++ { + if s.lock[i] { + panic(util.AssertErr()) + } if s.vfsShmFile.lock[i] != 0 { return _BUSY } |