projects
/
librecmc
/
librecmc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5b35d18
)
wprobe: fix some endianness fail in the l2 filter code
author
Felix Fietkau
<nbd@openwrt.org>
Tue, 7 Jul 2009 03:44:31 +0000
(
03:44
+0000)
committer
Felix Fietkau
<nbd@openwrt.org>
Tue, 7 Jul 2009 03:44:31 +0000
(
03:44
+0000)
SVN-Revision: 16732
package/wprobe/src/kernel/wprobe-core.c
patch
|
blob
|
history
diff --git
a/package/wprobe/src/kernel/wprobe-core.c
b/package/wprobe/src/kernel/wprobe-core.c
index d8f5a16f60500b11d847e46630627e144aa6a576..f9dd282d55a20f599d86fb5e3695a216ac0d1b4c 100644
(file)
--- a/
package/wprobe/src/kernel/wprobe-core.c
+++ b/
package/wprobe/src/kernel/wprobe-core.c
@@
-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->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;
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 (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;
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++) {
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;
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);
}
}
rcu_assign_pointer(dev->active_filter, f);