Thread (12 messages) 12 messages, 3 authors, 2021-06-22

[PATCH net 2/8] netfilter: nft_exthdr: check for IPv6 packet before further processing

flat view
STALE1939d SUPERSEDED

From: Pablo Neira Ayuso <pablo@netfilter.org>
Date: 2021-06-22 22:00:43
Also in: netfilter-devel
Subsystem: netfilter, networking [general], the rest · Maintainers: Pablo Neira Ayuso, Florian Westphal, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds

Revision v1 of 221 in this series.

Revisions (221)
  1. v1
  2. v1
  3. v1
  4. v1
  5. v1
  6. v1
  7. v1
  8. v1
  9. v1
  10. v1
  11. v1
  12. v1
  13. v1
  14. v1
  15. v1
  16. v1
  17. v1
  18. v1
  19. v1
  20. v1
  21. v1
  22. v1
  23. v1
  24. v1
  25. v1
  26. v1
  27. v1
  28. v1
  29. v1
  30. v1
  31. v1
  32. v1
  33. v1
  34. v1
  35. v1
  36. v1
  37. v1
  38. v1
  39. v1
  40. v1
  41. v1
  42. v1
  43. v1
  44. v1
  45. v1
  46. v1
  47. v1
  48. v1
  49. v1
  50. v1
  51. v1
  52. v1
  53. v1
  54. v1
  55. v1
  56. v1
  57. v1
  58. v1
  59. v1
  60. v1
  61. v1
  62. v1
  63. v1
  64. v1
  65. v1
  66. v1
  67. v1
  68. v1
  69. v1
  70. v1
  71. v1
  72. v1
  73. v1
  74. v1
  75. v1
  76. v1
  77. v1
  78. v1
  79. v1
  80. v1
  81. v1
  82. v1
  83. v1
  84. v1
  85. v1
  86. v1
  87. v1
  88. v1
  89. v1
  90. v1
  91. v1
  92. v1
  93. v1
  94. v1
  95. v1
  96. v1
  97. v1
  98. v1
  99. v1
  100. v1
  101. v1
  102. v1
  103. v1
  104. v1
  105. v1
  106. v1
  107. v1
  108. v1
  109. v1
  110. v1
  111. v1 current
  112. v1
  113. v1
  114. v1
  115. v2 [diff vs current]
  116. v1
  117. v1
  118. v1
  119. v1
  120. v1
  121. v1
  122. v1
  123. v1
  124. v1
  125. v1
  126. v2 [diff vs current]
  127. v1
  128. v1
  129. v1
  130. v1
  131. v1
  132. v1
  133. v1
  134. v1
  135. v1
  136. v1
  137. v1
  138. v1
  139. v1
  140. v1
  141. v1
  142. v1
  143. v1
  144. v1
  145. v1
  146. v1
  147. v1
  148. v1
  149. v1
  150. v1
  151. v1
  152. v1
  153. v1
  154. v1
  155. v1
  156. v1
  157. v1
  158. v1
  159. v1
  160. v1
  161. v1
  162. v1
  163. v1
  164. v1
  165. v1
  166. v1
  167. v1
  168. v1
  169. v1
  170. v1
  171. v1
  172. v1
  173. v2 [diff vs current]
  174. v1
  175. v1
  176. v2 [diff vs current]
  177. v1
  178. v1
  179. v1
  180. v1
  181. v2 [diff vs current]
  182. v1
  183. v1
  184. v1
  185. v1
  186. v1
  187. v3 [diff vs current]
  188. v1
  189. v1
  190. v1
  191. v1
  192. v1
  193. v1
  194. v1
  195. v1
  196. v1
  197. v2 [diff vs current]
  198. v1
  199. v1
  200. v1
  201. v1
  202. v2 [diff vs current]
  203. v1
  204. v1
  205. v1
  206. v1
  207. v1
  208. v1
  209. v1
  210. v2 [diff vs current]
  211. v1
  212. v2 [diff vs current]
  213. v1
  214. v1
  215. v1
  216. v1
  217. v2 [diff vs current]
  218. v1
  219. v1
  220. v2 [diff vs current]
  221. v2 [diff vs current]
ipv6_find_hdr() does not validate that this is an IPv6 packet. Add a
sanity check for calling ipv6_find_hdr() to make sure an IPv6 packet
is passed for parsing.

Fixes: 96518518cc41 ("netfilter: add nftables")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
 net/netfilter/nft_exthdr.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/net/netfilter/nft_exthdr.c b/net/netfilter/nft_exthdr.c
index f64f0017e9a5..670dd146fb2b 100644
--- a/net/netfilter/nft_exthdr.c
+++ b/net/netfilter/nft_exthdr.c
@@ -42,6 +42,9 @@ static void nft_exthdr_ipv6_eval(const struct nft_expr *expr,
 	unsigned int offset = 0;
 	int err;
 
+	if (pkt->skb->protocol != htons(ETH_P_IPV6))
+		goto err;
+
 	err = ipv6_find_hdr(pkt->skb, &offset, priv->type, NULL, NULL);
 	if (priv->flags & NFT_EXTHDR_F_PRESENT) {
 		nft_reg_store8(dest, err >= 0);
-- 
2.30.2
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help