|
@@ -76,6 +76,8 @@ checkentry_v0(const char *tablename,
|
|
|
unsigned int targinfosize,
|
|
|
unsigned int hook_mask)
|
|
|
{
|
|
|
+ struct ipt_mark_target_info *markinfo = targinfo;
|
|
|
+
|
|
|
if (targinfosize != IPT_ALIGN(sizeof(struct ipt_mark_target_info))) {
|
|
|
printk(KERN_WARNING "MARK: targinfosize %u != %Zu\n",
|
|
|
targinfosize,
|
|
@@ -88,6 +90,11 @@ checkentry_v0(const char *tablename,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ if (markinfo->mark > 0xffffffff) {
|
|
|
+ printk(KERN_WARNING "MARK: Only supports 32bit wide mark\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
@@ -120,6 +127,11 @@ checkentry_v1(const char *tablename,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ if (markinfo->mark > 0xffffffff) {
|
|
|
+ printk(KERN_WARNING "MARK: Only supports 32bit wide mark\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
return 1;
|
|
|
}
|
|
|
|