diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-12-08 23:12:17 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-12-13 14:54:02 +0000 |
commit | 2fa74faf927ed1ca9fc311a206c1e18a7295be7a (patch) | |
tree | 1d36a7411f0e471c20f4b1db84b02e1323463034 /openbsc/src/libcommon | |
parent | 3cbc05210192324592cc8b79e12d3095be302f90 (diff) |
oap_client: reject all messages in disabled/uninitialized state
Fixes the bug indicated in oap_client_test.c: adjust to actually expect the
proper behavior.
Also adjust for modified return value for message rejection. Instead of -1,
just expect < 0.
Adjust experr for new error messages.
Related: OS#1592
Change-Id: I16165d228653e8a2689f9df94b77b470c06480c6
Diffstat (limited to 'openbsc/src/libcommon')
-rw-r--r-- | openbsc/src/libcommon/gsup_client.c | 1 | ||||
-rw-r--r-- | openbsc/src/libcommon/oap_client.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/openbsc/src/libcommon/gsup_client.c b/openbsc/src/libcommon/gsup_client.c index 0360e0a24..4c1fe6111 100644 --- a/openbsc/src/libcommon/gsup_client.c +++ b/openbsc/src/libcommon/gsup_client.c @@ -155,6 +155,7 @@ static int gsup_client_oap_handle(struct gsup_client *gsupc, struct msgb *msg_rx int rc; struct msgb *msg_tx; + /* If the oap_state is disabled, this will reject the messages. */ rc = oap_client_handle(&gsupc->oap_state, msg_rx, &msg_tx); msgb_free(msg_rx); if (rc < 0) diff --git a/openbsc/src/libcommon/oap_client.c b/openbsc/src/libcommon/oap_client.c index 46dbcdda2..e372edea9 100644 --- a/openbsc/src/libcommon/oap_client.c +++ b/openbsc/src/libcommon/oap_client.c @@ -21,6 +21,7 @@ */ #include <string.h> +#include <errno.h> #include <osmocom/core/utils.h> #include <osmocom/crypt/auth.h> @@ -224,6 +225,21 @@ int oap_client_handle(struct oap_client_state *state, return -10; } + switch (state->state) { + case OAP_UNINITIALIZED: + LOGP(DLOAP, LOGL_ERROR, + "Received OAP message %d, but the OAP client is" + " not initialized\n", oap_msg.message_type); + return -ENOTCONN; + case OAP_DISABLED: + LOGP(DLOAP, LOGL_ERROR, + "Received OAP message %d, but the OAP client is" + " disabled\n", oap_msg.message_type); + return -ENOTCONN; + default: + break; + } + switch (oap_msg.message_type) { case OAP_MSGT_CHALLENGE_REQUEST: return handle_challenge(state, &oap_msg, msg_tx); |