diff --git a/sys/include/net/l2filter.h b/sys/include/net/l2filter.h index e421861148..11f999a900 100644 --- a/sys/include/net/l2filter.h +++ b/sys/include/net/l2filter.h @@ -83,8 +83,10 @@ typedef struct { * @pre @p addr != NULL * @pre @p addr_maxlen <= @ref CONFIG_L2FILTER_ADDR_MAXLEN * - * @return 0 on success - * @return -ENOMEM if no empty slot left in list + * @retval 0 on success + * @retval -ENOMEM if no empty slot left in list + * @retval -EINVAL if `addr_len > CONFIG_L2FILTER_ADDR_MAXLEN` **AND** `NDEBUG` is enabled. + * Otherwise this condition will trip an `assert()`. */ int l2filter_add(l2filter_t *list, const void *addr, size_t addr_len); diff --git a/sys/net/link_layer/l2filter/l2filter.c b/sys/net/link_layer/l2filter/l2filter.c index 02b32584ae..be01435015 100644 --- a/sys/net/link_layer/l2filter/l2filter.c +++ b/sys/net/link_layer/l2filter/l2filter.c @@ -44,7 +44,11 @@ void l2filter_init(l2filter_t *list) int l2filter_add(l2filter_t *list, const void *addr, size_t addr_len) { - assert(list && addr && (addr_len <= CONFIG_L2FILTER_ADDR_MAXLEN)); + assert(list && addr); + if (addr_len > CONFIG_L2FILTER_ADDR_MAXLEN) { + assert(0); + return -EINVAL; + } int res = -ENOMEM;