lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 146/496] netfilter: ebtables: convert BUG_ONs to WARN_ONs
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Florian Westphal <fw@strlen.de>

    [ Upstream commit fc6a5d0601c5ac1d02f283a46f60b87b2033e5ca ]

    All of these conditions are not fatal and should have
    been WARN_ONs from the get-go.

    Convert them to WARN_ONs and bail out.

    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/bridge/netfilter/ebtables.c | 27 ++++++++++++++++++---------
    1 file changed, 18 insertions(+), 9 deletions(-)

    --- a/net/bridge/netfilter/ebtables.c
    +++ b/net/bridge/netfilter/ebtables.c
    @@ -1641,7 +1641,8 @@ static int compat_match_to_user(struct e
    int off = ebt_compat_match_offset(match, m->match_size);
    compat_uint_t msize = m->match_size - off;

    - BUG_ON(off >= m->match_size);
    + if (WARN_ON(off >= m->match_size))
    + return -EINVAL;

    if (copy_to_user(cm->u.name, match->name,
    strlen(match->name) + 1) || put_user(msize, &cm->match_size))
    @@ -1671,7 +1672,8 @@ static int compat_target_to_user(struct
    int off = xt_compat_target_offset(target);
    compat_uint_t tsize = t->target_size - off;

    - BUG_ON(off >= t->target_size);
    + if (WARN_ON(off >= t->target_size))
    + return -EINVAL;

    if (copy_to_user(cm->u.name, target->name,
    strlen(target->name) + 1) || put_user(tsize, &cm->match_size))
    @@ -1907,7 +1909,8 @@ static int ebt_buf_add(struct ebt_entrie
    if (state->buf_kern_start == NULL)
    goto count_only;

    - BUG_ON(state->buf_kern_offset + sz > state->buf_kern_len);
    + if (WARN_ON(state->buf_kern_offset + sz > state->buf_kern_len))
    + return -EINVAL;

    memcpy(state->buf_kern_start + state->buf_kern_offset, data, sz);

    @@ -1920,7 +1923,8 @@ static int ebt_buf_add_pad(struct ebt_en
    {
    char *b = state->buf_kern_start;

    - BUG_ON(b && state->buf_kern_offset > state->buf_kern_len);
    + if (WARN_ON(b && state->buf_kern_offset > state->buf_kern_len))
    + return -EINVAL;

    if (b != NULL && sz > 0)
    memset(b + state->buf_kern_offset, 0, sz);
    @@ -1997,8 +2001,10 @@ static int compat_mtw_from_user(struct c
    pad = XT_ALIGN(size_kern) - size_kern;

    if (pad > 0 && dst) {
    - BUG_ON(state->buf_kern_len <= pad);
    - BUG_ON(state->buf_kern_offset - (match_size + off) + size_kern > state->buf_kern_len - pad);
    + if (WARN_ON(state->buf_kern_len <= pad))
    + return -EINVAL;
    + if (WARN_ON(state->buf_kern_offset - (match_size + off) + size_kern > state->buf_kern_len - pad))
    + return -EINVAL;
    memset(dst + size_kern, 0, pad);
    }
    return off + match_size;
    @@ -2048,7 +2054,8 @@ static int ebt_size_mwt(struct compat_eb
    if (ret < 0)
    return ret;

    - BUG_ON(ret < match32->match_size);
    + if (WARN_ON(ret < match32->match_size))
    + return -EINVAL;
    growth += ret - match32->match_size;
    growth += ebt_compat_entry_padsize();

    @@ -2157,7 +2164,8 @@ static int size_entry_mwt(struct ebt_ent

    startoff = state->buf_user_offset - startoff;

    - BUG_ON(*total < startoff);
    + if (WARN_ON(*total < startoff))
    + return -EINVAL;
    *total -= startoff;
    return 0;
    }
    @@ -2286,7 +2294,8 @@ static int compat_do_replace(struct net
    state.buf_kern_len = size64;

    ret = compat_copy_entries(entries_tmp, tmp.entries_size, &state);
    - BUG_ON(ret < 0); /* parses same data again */
    + if (WARN_ON(ret < 0))
    + goto out_unlock;

    vfree(entries_tmp);
    tmp.entries_size = size64;

    \
     
     \ /
      Last update: 2018-05-28 12:49    [W:4.061 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site