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);          }  } | 
