diff options
Diffstat (limited to 'src/ipcpd')
-rw-r--r-- | src/ipcpd/normal/frct.c | 6 | ||||
-rw-r--r-- | src/ipcpd/shim-eth-llc/main.c | 7 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/ipcpd/normal/frct.c b/src/ipcpd/normal/frct.c index 662a47d8..d873beae 100644 --- a/src/ipcpd/normal/frct.c +++ b/src/ipcpd/normal/frct.c @@ -234,7 +234,11 @@ int frct_nm1_post_sdu(struct pci * pci, id = instance->cep_id; } else { instance = frct.instances[pci->dst_cep_id]; - assert(instance); + if (instance == NULL) { + pthread_mutex_unlock(&frct.instances_lock); + ipcp_flow_del(sdb); + return -1; + } id = pci->dst_cep_id; instance->state = CONN_ESTABLISHED; } diff --git a/src/ipcpd/shim-eth-llc/main.c b/src/ipcpd/shim-eth-llc/main.c index 34a25ee2..1b6e02c2 100644 --- a/src/ipcpd/shim-eth-llc/main.c +++ b/src/ipcpd/shim-eth-llc/main.c @@ -532,12 +532,11 @@ static void * eth_llc_ipcp_mgmt_handler(void * o) continue; } - eth_llc_ipcp_mgmt_frame(frame->buf, frame->len, frame->r_addr); - list_del(&frame->next); - free(frame); - pthread_mutex_unlock(ð_llc_data.mgmt_lock); + + eth_llc_ipcp_mgmt_frame(frame->buf, frame->len, frame->r_addr); + free(frame); } } |