From 792edebb4fa5036cdbc32c38caa36c0fd5fcd6b5 Mon Sep 17 00:00:00 2001 From: Alexander Huemer Date: Tue, 24 May 2011 15:16:57 +0200 Subject: libabis: fix segfault on malformed ipaccess RSL link This patch fixes a segfault that occured when a ipaccess RSL link gets closed unexpectedly. The segfault can be provoked by connecting to the RSL port with ncat and hitting ^C. --- openbsc/src/libabis/input/ipaccess.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'openbsc/src/libabis') diff --git a/openbsc/src/libabis/input/ipaccess.c b/openbsc/src/libabis/input/ipaccess.c index 142711804..cc2a7a055 100644 --- a/openbsc/src/libabis/input/ipaccess.c +++ b/openbsc/src/libabis/input/ipaccess.c @@ -429,12 +429,15 @@ static int ipaccess_drop(struct e1inp_ts *ts, struct osmo_fd *bfd) struct e1inp_sign_link *link; int bts_nr; - if (!ts) { + if (!ts || !bfd->data) { /* * If we don't have a TS this means that this is a RSL * connection but we are not past the authentication * handling yet. So we can safely delete this bfd and * wait for a reconnect. + * If we don't have bfd->data this means that a RSL + * connection was accept()ed, but nothing was recv()ed + * and the connection gets close()ed. */ osmo_fd_unregister(bfd); close(bfd->fd); -- cgit v1.2.3