mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	netfilter: conntrack: fix bug in for_each_sctp_chunk
skb_header_pointer() will return NULL if offset + sizeof(_sch) exceeds
skb->len, so this offset < skb->len test is redundant.
if sch->length == 0, this will end up in an infinite loop, add a check
for sch->length > 0
Fixes: 9fb9cbb108 ("[NETFILTER]: Add nf_conntrack subsystem.")
Suggested-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
			
			
This commit is contained in:
		
							parent
							
								
									a9993591fa
								
							
						
					
					
						commit
						98ee007745
					
				| @ -160,8 +160,8 @@ static void sctp_print_conntrack(struct seq_file *s, struct nf_conn *ct) | ||||
| 
 | ||||
| #define for_each_sctp_chunk(skb, sch, _sch, offset, dataoff, count)	\ | ||||
| for ((offset) = (dataoff) + sizeof(struct sctphdr), (count) = 0;	\ | ||||
| 	(offset) < (skb)->len &&					\ | ||||
| 	((sch) = skb_header_pointer((skb), (offset), sizeof(_sch), &(_sch)));	\ | ||||
| 	((sch) = skb_header_pointer((skb), (offset), sizeof(_sch), &(_sch))) &&	\ | ||||
| 	(sch)->length;	\ | ||||
| 	(offset) += (ntohs((sch)->length) + 3) & ~3, (count)++) | ||||
| 
 | ||||
| /* Some validity checks to make sure the chunks are fine */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Sriram Yagnaraman
						Sriram Yagnaraman