mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	netfilter: conntrack: avoid integer overflow when resizing
Can overflow so we might allocate very small table when bucket count is high on a 32bit platform. Note: resize is only possible from init_netns. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
		
							parent
							
								
									62131e5d73
								
							
						
					
					
						commit
						9cc1c73ad6
					
				
					 1 changed files with 7 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1601,8 +1601,15 @@ void *nf_ct_alloc_hashtable(unsigned int *sizep, int nulls)
 | 
			
		|||
	unsigned int nr_slots, i;
 | 
			
		||||
	size_t sz;
 | 
			
		||||
 | 
			
		||||
	if (*sizep > (UINT_MAX / sizeof(struct hlist_nulls_head)))
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct hlist_nulls_head) != sizeof(struct hlist_head));
 | 
			
		||||
	nr_slots = *sizep = roundup(*sizep, PAGE_SIZE / sizeof(struct hlist_nulls_head));
 | 
			
		||||
 | 
			
		||||
	if (nr_slots > (UINT_MAX / sizeof(struct hlist_nulls_head)))
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	sz = nr_slots * sizeof(struct hlist_nulls_head);
 | 
			
		||||
	hash = (void *)__get_free_pages(GFP_KERNEL | __GFP_NOWARN | __GFP_ZERO,
 | 
			
		||||
					get_order(sz));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue