mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-24 20:53:22 +02:00
wprobe: fix some endianness fail in the l2 filter code
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16732 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
e68b3865cc
commit
864cae4970
@ -844,6 +844,7 @@ wprobe_check_filter(void *data, int datalen, int gs)
|
|||||||
|
|
||||||
hdr->name[31] = 0;
|
hdr->name[31] = 0;
|
||||||
cur_is = be32_to_cpu(hdr->n_items);
|
cur_is = be32_to_cpu(hdr->n_items);
|
||||||
|
hdr->n_items = cur_is;
|
||||||
is += cur_is;
|
is += cur_is;
|
||||||
for (j = 0; j < cur_is; j++) {
|
for (j = 0; j < cur_is; j++) {
|
||||||
struct sock_filter *sf;
|
struct sock_filter *sf;
|
||||||
@ -854,11 +855,13 @@ wprobe_check_filter(void *data, int datalen, int gs)
|
|||||||
if (data > end)
|
if (data > end)
|
||||||
goto overrun;
|
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;
|
goto overrun;
|
||||||
|
|
||||||
hdr->name[31] = 0;
|
|
||||||
hdr->n_items = n_items = be32_to_cpu(hdr->n_items);
|
|
||||||
sf = data;
|
sf = data;
|
||||||
if (n_items > 0) {
|
if (n_items > 0) {
|
||||||
for (k = 0; k < n_items; k++) {
|
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++) {
|
for (j = 0; j < g->n_items; j++) {
|
||||||
hdr = data;
|
hdr = data;
|
||||||
f->items[cur_is++] = 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);
|
rcu_assign_pointer(dev->active_filter, f);
|
||||||
|
Loading…
Reference in New Issue
Block a user