diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2023-01-16 14:15:27 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2023-02-12 23:42:24 +0100 |
commit | 7a8ed9459dfe803c529d61d3741d8d4f8f67ea92 (patch) | |
tree | 53b322cc77a651623e9498aecd516993743619a6 /tcp_splice.c | |
parent | cc6d8286d1043d04eb8518e39cebcb9e086dca17 (diff) | |
download | passt-7a8ed9459dfe803c529d61d3741d8d4f8f67ea92.tar passt-7a8ed9459dfe803c529d61d3741d8d4f8f67ea92.tar.gz passt-7a8ed9459dfe803c529d61d3741d8d4f8f67ea92.tar.bz2 passt-7a8ed9459dfe803c529d61d3741d8d4f8f67ea92.tar.lz passt-7a8ed9459dfe803c529d61d3741d8d4f8f67ea92.tar.xz passt-7a8ed9459dfe803c529d61d3741d8d4f8f67ea92.tar.zst passt-7a8ed9459dfe803c529d61d3741d8d4f8f67ea92.zip |
Make assertions actually useful
There are some places in passt/pasta which #include <assert.h> and make
various assertions. If we hit these something has already gone wrong, but
they're there so that we a useful message instead of cryptic misbehaviour
if assumptions we thought were correct turn out not to be.
Except.. the glibc implementation of assert() uses syscalls that aren't in
our seccomp filter, so we'll get a SIGSYS before it actually prints the
message. Work around this by adding our own ASSERT() implementation using
our existing err() function to log the message, and an abort(). The
abort() probably also won't work exactly right with seccomp, but once we've
printed the message, dying with a SIGSYS works just as well as dying with
a SIGABRT.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp_splice.c')
-rw-r--r-- | tcp_splice.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/tcp_splice.c b/tcp_splice.c index 72b1672..1d624f1 100644 --- a/tcp_splice.c +++ b/tcp_splice.c @@ -46,7 +46,6 @@ #include <sys/epoll.h> #include <sys/types.h> #include <sys/socket.h> -#include <assert.h> #include "util.h" #include "passt.h" @@ -519,7 +518,7 @@ bool tcp_splice_conn_from_sock(struct ctx *c, union epoll_ref ref, union inany_addr aany; in_port_t port; - assert(c->mode == MODE_PASTA); + ASSERT(c->mode == MODE_PASTA); inany_from_sockaddr(&aany, &port, sa); a4 = inany_v4(&aany); |