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 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/openbsc/src/libabis/input/ipaccess.c 
b/openbsc/src/libabis/input/ipaccess.c
index 1427118..cc2a7a0 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);
-- 
1.7.5.rc3


Reply via email to