mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
utils: remove unneeded EnsureProcHandle
All of the callers of EnsureProcHandle now use filepath-securejoin's ProcThreadSelf to get a file handle, which has much stricter verification to avoid procfs attacks than EnsureProcHandle's very simplistic filesystem type check. Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
This commit is contained in:
@@ -46,12 +46,6 @@ func setProcAttr(attr, value string) error {
|
|||||||
defer closer()
|
defer closer()
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
// NOTE: This is not really necessary since securejoin.ProcThreadSelf
|
|
||||||
// verifies this in a far stricter sense than EnsureProcHandle.
|
|
||||||
if err := utils.EnsureProcHandle(f); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = f.WriteString(value)
|
_, err = f.WriteString(value)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,18 +19,6 @@ import (
|
|||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
)
|
)
|
||||||
|
|
||||||
// EnsureProcHandle returns whether or not the given file handle is on procfs.
|
|
||||||
func EnsureProcHandle(fh *os.File) error {
|
|
||||||
var buf unix.Statfs_t
|
|
||||||
if err := unix.Fstatfs(int(fh.Fd()), &buf); err != nil {
|
|
||||||
return fmt.Errorf("ensure %s is on procfs: %w", fh.Name(), err)
|
|
||||||
}
|
|
||||||
if buf.Type != unix.PROC_SUPER_MAGIC {
|
|
||||||
return fmt.Errorf("%s is not on procfs", fh.Name())
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
haveCloseRangeCloexecBool bool
|
haveCloseRangeCloexecBool bool
|
||||||
haveCloseRangeCloexecOnce sync.Once
|
haveCloseRangeCloexecOnce sync.Once
|
||||||
@@ -67,12 +55,6 @@ func fdRangeFrom(minFd int, fn fdFunc) error {
|
|||||||
defer closer()
|
defer closer()
|
||||||
defer fdDir.Close()
|
defer fdDir.Close()
|
||||||
|
|
||||||
// NOTE: This is not really necessary since securejoin.ProcThreadSelf
|
|
||||||
// verifies this in a far stricter sense than EnsureProcHandle.
|
|
||||||
if err := EnsureProcHandle(fdDir); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
fdList, err := fdDir.Readdirnames(-1)
|
fdList, err := fdDir.Readdirnames(-1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
Reference in New Issue
Block a user