mirror of
https://github.com/containers/podman.git
synced 2025-08-16 04:15:29 +08:00

In podman 1.0 if you executed a command like: podman run --user dwalsh --cap-add net_bind_service alpine nc -l 80 It would work, and the user dwalsh would get the capability, in podman 2.0, only root and the binding set gets the capability. This change restores us back to the way podman 1.0 worked. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
66 lines
1.8 KiB
Go
66 lines
1.8 KiB
Go
// Copyright 2019 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package cpu
|
|
|
|
import (
|
|
"runtime"
|
|
)
|
|
|
|
// byteOrder is a subset of encoding/binary.ByteOrder.
|
|
type byteOrder interface {
|
|
Uint32([]byte) uint32
|
|
Uint64([]byte) uint64
|
|
}
|
|
|
|
type littleEndian struct{}
|
|
type bigEndian struct{}
|
|
|
|
func (littleEndian) Uint32(b []byte) uint32 {
|
|
_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808
|
|
return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
|
|
}
|
|
|
|
func (littleEndian) Uint64(b []byte) uint64 {
|
|
_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
|
|
return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |
|
|
uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
|
|
}
|
|
|
|
func (bigEndian) Uint32(b []byte) uint32 {
|
|
_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808
|
|
return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24
|
|
}
|
|
|
|
func (bigEndian) Uint64(b []byte) uint64 {
|
|
_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
|
|
return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |
|
|
uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56
|
|
}
|
|
|
|
// hostByteOrder returns littleEndian on little-endian machines and
|
|
// bigEndian on big-endian machines.
|
|
func hostByteOrder() byteOrder {
|
|
switch runtime.GOARCH {
|
|
case "386", "amd64", "amd64p32",
|
|
"alpha",
|
|
"arm", "arm64",
|
|
"mipsle", "mips64le", "mips64p32le",
|
|
"nios2",
|
|
"ppc64le",
|
|
"riscv", "riscv64",
|
|
"sh":
|
|
return littleEndian{}
|
|
case "armbe", "arm64be",
|
|
"m68k",
|
|
"mips", "mips64", "mips64p32",
|
|
"ppc", "ppc64",
|
|
"s390", "s390x",
|
|
"shbe",
|
|
"sparc", "sparc64":
|
|
return bigEndian{}
|
|
}
|
|
panic("unknown architecture")
|
|
}
|