This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, master has been updated via b44cbbbfc148261843b041fbb5b4ea8f8879f44e (commit) from 461a16705242b1fd7e64b50fcaae57fce7cd7f79 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit b44cbbbfc148261843b041fbb5b4ea8f8879f44e Author: Maxim Uvarov maxim.uvarov@linaro.org Date: Tue Sep 11 16:35:27 2018 +0300
helper: iplookuptable fix puting values to table
On putting values to table we have to validate input data and reject unaccepted data (cidr bits - Classless Inter-Domain Routing is in range of 0 to 32).
Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org
diff --git a/helper/iplookuptable.c b/helper/iplookuptable.c index 61f63402..7102eb54 100644 --- a/helper/iplookuptable.c +++ b/helper/iplookuptable.c @@ -585,24 +585,25 @@ prefix_insert_into_lx( odph_iplookup_table_impl *tbl, prefix_entry_t *entry, uint8_t cidr, odp_buffer_t nexthop, uint8_t level) { - uint8_t ret = 0; + int ret = 0; uint32_t i = 0, limit = (1 << (level - cidr)); prefix_entry_t *e = entry, *ne = NULL;
for (i = 0; i < limit; i++, e++) { - if (e->child == 1) { - if (e->cidr > cidr) - continue; + if (e->cidr > cidr) + continue;
+ if (e->child == 1) { e->cidr = cidr; /* push to next level */ ne = (prefix_entry_t *)e->ptr; ret = prefix_insert_into_lx( tbl, ne, cidr, nexthop, cidr + 8); + if (ret == -1) + return -1; + if (ret == 0) + return ret; } else { - if (e->cidr > cidr) - continue; - e->child = 0; e->cidr = cidr; e->nexthop = nexthop; @@ -678,8 +679,9 @@ odph_iplookup_table_put_value(odph_table_t tbl, void *key, void *value)
nexthop = *((odp_buffer_t *)value);
- if (prefix->cidr == 0) + if (prefix->cidr == 0 || prefix->cidr > 32) return -1; + prefix->ip = prefix->ip & (0xffffffff << (IP_LENGTH - prefix->cidr));
/* insert into trie */ @@ -899,7 +901,7 @@ odph_iplookup_table_remove_value(odph_table_t tbl, void *key) ip = prefix->ip; cidr = prefix->cidr;
- if (cidr == 0) + if (cidr == 0 || cidr > 32) return -EINVAL;
prefix_entry_t *entry = &impl->l1e[ip >> 16];
-----------------------------------------------------------------------
Summary of changes: helper/iplookuptable.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)
hooks/post-receive