diff options
author | David Drysdale <drysdale@google.com> | 2015-08-11 10:31:29 +0100 |
---|---|---|
committer | Paul Moore <pmoore@redhat.com> | 2015-08-12 21:23:41 -0400 |
commit | 641cc809f5699fede96a76821de6fed8b7375c73 (patch) | |
tree | 8d09d8ca523432cfa050984f07aae064ed642766 | |
parent | a76904d09b63c5888088dd50c2a409f938fe9062 (diff) | |
download | libseccomp-641cc809f5699fede96a76821de6fed8b7375c73.tar.gz |
tools: support more LD modes in disassembler
Add support for other modes for LD/LDX operations
(even though they are rare in seccomp BPF programs),
specifically BPF_IMM, BPF_IND, BPF_LEN and BPF_MSH.
Signed-off-by: David Drysdale <drysdale@google.com>
Signed-off-by: Paul Moore <pmoore@redhat.com>
-rw-r--r-- | tools/scmp_bpf_disasm.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/scmp_bpf_disasm.c b/tools/scmp_bpf_disasm.c index b412759..911fd85 100644 --- a/tools/scmp_bpf_disasm.c +++ b/tools/scmp_bpf_disasm.c @@ -199,6 +199,18 @@ static void bpf_decode_args(const bpf_instr_raw *bpf, unsigned int line) case BPF_MEM: printf("$temp[%u]", bpf->k); break; + case BPF_IMM: + printf("%u", bpf->k); + break; + case BPF_IND: + printf("$data[X + %u]", bpf->k); + break; + case BPF_LEN: + printf("len($data)"); + break; + case BPF_MSH: + printf("4 * $data[%u] & 0x0f", bpf->k); + break; } break; case BPF_ST: @@ -312,6 +324,18 @@ static void bpf_dot_decode_args(const bpf_instr_raw *bpf, unsigned int line) case BPF_MEM: printf(" $temp[%u]\",shape=parallelogram]\n", bpf->k); break; + case BPF_IMM: + printf(" %u\",shape=parallelogram]\n", bpf->k); + break; + case BPF_IND: + printf(" $data[X + %u]\",shape=parallelogram]\n", bpf->k); + break; + case BPF_LEN: + printf(" len($data)\",shape=parallelogram]\n"); + break; + case BPF_MSH: + printf(" 4 * $data[%u] & 0x0f\",shape=parallelogram]\n", bpf->k); + break; } break; case BPF_ST: |