wprobe: fix some endianness fail in the l2 filter code
SVN-Revision: 16732
This commit is contained in:
parent
5b35d1851c
commit
959bae3462
@ -844,6 +844,7 @@ wprobe_check_filter(void *data, int datalen, int gs)
|
||||
|
||||
hdr->name[31] = 0;
|
||||
cur_is = be32_to_cpu(hdr->n_items);
|
||||
hdr->n_items = cur_is;
|
||||
is += cur_is;
|
||||
for (j = 0; j < cur_is; j++) {
|
||||
struct sock_filter *sf;
|
||||
@ -854,11 +855,13 @@ wprobe_check_filter(void *data, int datalen, int gs)
|
||||
if (data > end)
|
||||
goto overrun;
|
||||
|
||||
if (hdr->n_items > 1024)
|
||||
hdr->name[31] = 0;
|
||||
n_items = be32_to_cpu(hdr->n_items);
|
||||
hdr->n_items = n_items;
|
||||
|
||||
if (n_items > 1024)
|
||||
goto overrun;
|
||||
|
||||
hdr->name[31] = 0;
|
||||
hdr->n_items = n_items = be32_to_cpu(hdr->n_items);
|
||||
sf = data;
|
||||
if (n_items > 0) {
|
||||
for (k = 0; k < n_items; k++) {
|
||||
@ -968,7 +971,7 @@ wprobe_set_filter(struct wprobe_iface *dev, void *data, int len)
|
||||
for (j = 0; j < g->n_items; j++) {
|
||||
hdr = data;
|
||||
f->items[cur_is++] = data;
|
||||
data += sizeof(*hdr) + be32_to_cpu(hdr->n_items) * sizeof(struct sock_filter);
|
||||
data += sizeof(*hdr) + hdr->n_items * sizeof(struct sock_filter);
|
||||
}
|
||||
}
|
||||
rcu_assign_pointer(dev->active_filter, f);
|
||||
|
Loading…
Reference in New Issue
Block a user