diff --git a/core/net/rpl/rpl-dag.c b/core/net/rpl/rpl-dag.c index 3b1e01c73..379461a0b 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -1022,6 +1022,10 @@ rpl_local_repair(rpl_instance_t *instance) { int i; + if(instance == NULL) { + PRINTF("RPL: local repair requested for instance NULL\n"); + return; + } PRINTF("RPL: Starting a local instance repair\n"); for(i = 0; i < RPL_MAX_DAG_PER_INSTANCE; i++) { if(instance->dag_table[i].used) { diff --git a/core/net/rpl/rpl-icmp6.c b/core/net/rpl/rpl-icmp6.c index 2b9c87476..2b773c5de 100644 --- a/core/net/rpl/rpl-icmp6.c +++ b/core/net/rpl/rpl-icmp6.c @@ -750,9 +750,27 @@ dao_output_target(rpl_parent_t *parent, uip_ipaddr_t *prefix, uint8_t lifetime) /* Destination Advertisement Object */ + if(parent == NULL) { + PRINTF("RPL dao_output_target error parent NULL\n"); + return; + } + dag = parent->dag; + if(dag == NULL) { + PRINTF("RPL dao_output_target error dag NULL\n"); + return; + } + instance = dag->instance; + if(instance == NULL) { + PRINTF("RPL dao_output_target error instance NULL\n"); + return; + } + if(prefix == NULL) { + PRINTF("RPL dao_output_target error prefix NULL\n"); + return; + } #ifdef RPL_DEBUG_DAO_OUTPUT RPL_DEBUG_DAO_OUTPUT(parent); #endif diff --git a/core/net/uip-ds6-nbr.c b/core/net/uip-ds6-nbr.c index 22d3a9f3c..5d7b05ba8 100644 --- a/core/net/uip-ds6-nbr.c +++ b/core/net/uip-ds6-nbr.c @@ -143,11 +143,13 @@ uip_ds6_nbr_t * uip_ds6_nbr_lookup(uip_ipaddr_t *ipaddr) { uip_ds6_nbr_t *nbr = nbr_table_head(ds6_neighbors); - while(nbr != NULL) { - if(uip_ipaddr_cmp(&nbr->ipaddr, ipaddr)) { - return nbr; + if(ipaddr != NULL) { + while(nbr != NULL) { + if(uip_ipaddr_cmp(&nbr->ipaddr, ipaddr)) { + return nbr; + } + nbr = nbr_table_next(ds6_neighbors, nbr); } - nbr = nbr_table_next(ds6_neighbors, nbr); } return NULL; }