diff options
author | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-10-17 14:58:26 +0200 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-10-17 14:58:26 +0200 |
commit | 13db969ba3ae84c8a18bf3d1c302bd9542faa27d (patch) | |
tree | 20f6c9e291ffc71882e72f40f7be3a56b3c412ca /src/ipcpd | |
parent | afb04d957a5322d483e6422f3baf1a651915af10 (diff) | |
download | ouroboros-13db969ba3ae84c8a18bf3d1c302bd9542faa27d.tar.gz ouroboros-13db969ba3ae84c8a18bf3d1c302bd9542faa27d.zip |
ipcpd: normal: Avoid allocating flow over unenrolled IPCP.
There was no check to see if the normal IPCP was enrolled or not when
a flow allocation request is done.
Diffstat (limited to 'src/ipcpd')
-rw-r--r-- | src/ipcpd/normal/fmgr.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/ipcpd/normal/fmgr.c b/src/ipcpd/normal/fmgr.c index 8c627641..cb25072e 100644 --- a/src/ipcpd/normal/fmgr.c +++ b/src/ipcpd/normal/fmgr.c @@ -389,6 +389,16 @@ int fmgr_np1_alloc(int fd, buffer_t buf; flow_alloc_msg_t msg = FLOW_ALLOC_MSG__INIT; + pthread_rwlock_rdlock(&ipcpi.state_lock); + + if (ipcp_get_state() != IPCP_ENROLLED) { + pthread_rwlock_unlock(&ipcpi.state_lock); + LOG_ERR("IPCP is not enrolled yet."); + return -1; /* -ENOTINIT */ + } + + pthread_rwlock_unlock(&ipcpi.state_lock); + /* FIXME: Obtain correct address here from DIF NSM */ msg.code = FLOW_ALLOC_CODE__FLOW_REQ; |