decode_fprog(struct tcb *tcp, unsigned short len, unsigned long addr)
{
if (!len || abbrev(tcp)) {
- tprintf("{len = %u, filter = %#lx}", len, addr);
+ tprintf("{len = %u, filter = ", len);
+ printaddr(addr);
+ tprints("}");
} else {
unsigned int i = 0;
void
print_seccomp_filter(struct tcb *tcp, unsigned long addr)
{
- if (addr) {
#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
- if (current_wordsize == 4) {
- struct {
- unsigned short len;
- uint32_t filter;
- } fprog;
- if (umove(tcp, addr, &fprog) < 0)
- tprintf("%#lx", addr);
- else
- decode_fprog(tcp, fprog.len, fprog.filter);
- } else {
+ if (current_wordsize == 4) {
+ struct {
+ unsigned short len;
+ uint32_t filter;
+ } fprog;
+
+ if (!umove_or_printaddr(tcp, addr, &fprog))
+ decode_fprog(tcp, fprog.len, fprog.filter);
+ } else {
#endif
- struct {
- unsigned short len;
- unsigned long filter;
- } fprog;
- if (umove(tcp, addr, &fprog) < 0)
- tprintf("%#lx", addr);
- else
- decode_fprog(tcp, fprog.len, fprog.filter);
+ struct {
+ unsigned short len;
+ unsigned long filter;
+ } fprog;
+
+ if (!umove_or_printaddr(tcp, addr, &fprog))
+ decode_fprog(tcp, fprog.len, fprog.filter);
#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
- }
-#endif
- } else {
- tprints("NULL");
}
+#endif
}
static void
decode_seccomp_set_mode_strict(unsigned int flags, unsigned long addr)
{
tprintf("%u, ", flags);
- if (addr)
- tprintf("%#lx", addr);
- else
- tprints("NULL");
+ printaddr(addr);
}
SYS_FUNC(seccomp)