/
niceSOFT
/
libcap
Обзор
Документация
Войти
/
niceSOFT
/
libcap
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
cap/oslocks.go
51 строка
2 KB
Andrew G. Morgan
Clean up go documentation.
02 мар 2025, 21:02
02 мар 2025, 21:02
d510712
Код
Авторство
О чём код?
// +build go1.10 package cap import "syscall" // LaunchSupported indicates that is safe to return from a locked // OS Thread and have that OS Thread be terminated by the runtime. The // Launch functionality really needs to rely on the fact that an // excess of runtime.LockOSThread() vs. runtime.UnlockOSThread() calls // in a returning go routine will cause the underlying locked OSThread // to terminate. That feature was added to the Go runtime in version // 1.10. // // See these bugs for the discussion and feature assumed by the code // in this Launch() functionality: [Go bug 20395], [Go bug 20458]. // // A value of false for this constant causes the Launch functionality // to fail with an error: cap.ErrNoLaunch. If this value is false you // have two choices with respect to the Launch functionality: // // 1) don't use cap.(*Launcher).Launch() // 2) upgrade your Go toolchain to 1.10+ (ie., do this one). // // [Go bug 20395]: https://github.com/golang/go/issues/20395 // [Go bug 20458]: https://github.com/golang/go/issues/20458 const LaunchSupported = true // validatePA confirms that the pa.Sys entry is not incompatible with // Launch and loads up the chroot value. func validatePA(pa *syscall.ProcAttr, chroot string) (bool, error) { s := pa.Sys if s == nil { if chroot == "" { return false, nil } s = &syscall.SysProcAttr{ Chroot: chroot, } pa.Sys = s } else if s.Chroot != "" { return false, ErrAmbiguousChroot } if s.Credential != nil { return false, ErrAmbiguousIDs } if len(s.AmbientCaps) != 0 { return false, ErrAmbiguousAmbient } return s != nil && s.Chroot != "", nil }