Browse Source

netfilter: ebtables: abort if next_offset is too small

next_offset must be > 0, otherwise this loops forever.
The offset also contains the size of the ebt_entry structure
itself, so anything smaller is invalid.

Signed-off-by: Florian Westphal <fwestphal@astaro.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Florian Westphal 15 năm trước cách đây
mục cha
commit
1756de262e
1 tập tin đã thay đổi với 2 bổ sung0 xóa
  1. 2 0
      net/bridge/netfilter/ebtables.c

+ 2 - 0
net/bridge/netfilter/ebtables.c

@@ -444,6 +444,8 @@ static int ebt_verify_pointers(const struct ebt_replace *repl,
 				break;
 			if (left < e->next_offset)
 				break;
+			if (e->next_offset < sizeof(struct ebt_entry))
+				return -EINVAL;
 			offset += e->next_offset;
 		}
 	}