mirror of
https://github.com/rocky-linux/peridot.git
synced 2024-11-30 16:46:27 +00:00
69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
//go:build linux
|
|
|
|
// Copyright (C) 2024 SUSE LLC. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package securejoin
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
type forceGetProcRootLevel int
|
|
|
|
const (
|
|
forceGetProcRootDefault forceGetProcRootLevel = iota
|
|
forceGetProcRootOpenTree // force open_tree()
|
|
forceGetProcRootOpenTreeAtRecursive // force open_tree(AT_RECURSIVE)
|
|
forceGetProcRootUnsafe // force open()
|
|
)
|
|
|
|
var testingForceGetProcRoot *forceGetProcRootLevel
|
|
|
|
func testingCheckClose(check bool, f *os.File) bool {
|
|
if check {
|
|
if f != nil {
|
|
_ = f.Close()
|
|
}
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func testingForcePrivateProcRootOpenTree(f *os.File) bool {
|
|
return testing.Testing() && testingForceGetProcRoot != nil &&
|
|
testingCheckClose(*testingForceGetProcRoot >= forceGetProcRootOpenTree, f)
|
|
}
|
|
|
|
func testingForcePrivateProcRootOpenTreeAtRecursive(f *os.File) bool {
|
|
return testing.Testing() && testingForceGetProcRoot != nil &&
|
|
testingCheckClose(*testingForceGetProcRoot >= forceGetProcRootOpenTreeAtRecursive, f)
|
|
}
|
|
|
|
func testingForceGetProcRootUnsafe(f *os.File) bool {
|
|
return testing.Testing() && testingForceGetProcRoot != nil &&
|
|
testingCheckClose(*testingForceGetProcRoot >= forceGetProcRootUnsafe, f)
|
|
}
|
|
|
|
type forceProcThreadSelfLevel int
|
|
|
|
const (
|
|
forceProcThreadSelfDefault forceProcThreadSelfLevel = iota
|
|
forceProcSelfTask
|
|
forceProcSelf
|
|
)
|
|
|
|
var testingForceProcThreadSelf *forceProcThreadSelfLevel
|
|
|
|
func testingForceProcSelfTask() bool {
|
|
return testing.Testing() && testingForceProcThreadSelf != nil &&
|
|
*testingForceProcThreadSelf >= forceProcSelfTask
|
|
}
|
|
|
|
func testingForceProcSelf() bool {
|
|
return testing.Testing() && testingForceProcThreadSelf != nil &&
|
|
*testingForceProcThreadSelf >= forceProcSelf
|
|
}
|