# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
BEGIN {
- cap = "(0|CAP_[A-Z_]+(\\|CAP_[A-Z_]+)*|CAP_[A-Z_]+(\\|CAP_[A-Z_]+){37}\\|0xffffffc0)"
+ cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
s_efault = "-1 EFAULT (Bad address)"
r_efault = "-1 EFAULT \\(Bad address\\)"
r_addr = "0x[[:xdigit:]]+"
r[2] = "^capget\\(" r_addr ", " r_addr "\\) = " r_efault
r[3] = "^capget\\(\\{_LINUX_CAPABILITY_VERSION_3, 0\\}, " r_addr "\\) = " r_efault
r[4] = "^capget\\(\\{_LINUX_CAPABILITY_VERSION_3, 0\\}, \\{" cap ", " cap ", " cap "\\}\\) = 0$"
- capset_data = "{CAP_DAC_OVERRIDE|CAP_WAKE_ALARM, CAP_DAC_READ_SEARCH|CAP_BLOCK_SUSPEND, 0}"
+ capset_data = "{1<<CAP_DAC_OVERRIDE|1<<CAP_WAKE_ALARM, 1<<CAP_DAC_READ_SEARCH|1<<CAP_BLOCK_SUSPEND, 0}"
s[5] = "capset({_LINUX_CAPABILITY_VERSION_3, 0}, " capset_data ") = -1 EPERM (Operation not permitted)"
s[6] = "+++ exited with 0 +++"
cond_xlat()
{
- local line val m def xlat str
+ local line val m def xlat
line="$1"; shift
- str="$1"; shift
val="$(printf %s "${line}" | sed -n 's/^\([^[:space:]]\+\).*$/\1/p')"
m="${val%%|*}"
def="$(printf %s "${line}" |
sed -n 's/^[^[:space:]]\+[[:space:]]\+\([^[:space:]].*\)$/\1/p')"
- if [ -z "${str}" ]; then
+ if [ "${m}" = "${m#1<<}" ]; then
xlat="$(print_xlat "${val}")"
else
+ xlat="$(print_xlat_pair "1ULL<<${val#1<<}" "${val}")"
m="${m#1<<}"
- xlat="$(print_xlat_pair "1ULL<<${val#1<<}" "${str}")"
fi
if [ -z "${def}" ]; then
if [ -n "${unconditional}" ]; then
print_xlat "${line}"
else
- cond_xlat "${line}" ''
+ cond_xlat "${line}"
fi
;;
'1<<'[A-Z_]*) # symbolic constants with shift
if [ -n "${unconditional}" ]; then
- print_xlat_pair "1ULL<<${line#1<<}" "${line#1<<}"
+ print_xlat_pair "1ULL<<${line#1<<}" "${line}"
else
- cond_xlat "${line}" "${line#1<<}"
+ cond_xlat "${line}"
fi
;;
[0-9]*) # numeric constants