net/core/filter.c
changeset 2 d1f6d8b6f81c
parent 0 aa628870c1d3
equal deleted inserted replaced
1:0056487c491e 2:d1f6d8b6f81c
   311 			if (A > skb->len - sizeof(struct nlattr))
   311 			if (A > skb->len - sizeof(struct nlattr))
   312 				return 0;
   312 				return 0;
   313 
   313 
   314 			nla = nla_find((struct nlattr *)&skb->data[A],
   314 			nla = nla_find((struct nlattr *)&skb->data[A],
   315 				       skb->len - A, X);
   315 				       skb->len - A, X);
       
   316 			if (nla)
       
   317 				A = (void *)nla - (void *)skb->data;
       
   318 			else
       
   319 				A = 0;
       
   320 			continue;
       
   321 		}
       
   322 		case SKF_AD_NLATTR_NEST: {
       
   323 			struct nlattr *nla;
       
   324 
       
   325 			if (skb_is_nonlinear(skb))
       
   326 				return 0;
       
   327 			if (A > skb->len - sizeof(struct nlattr))
       
   328 				return 0;
       
   329 
       
   330 			nla = (struct nlattr *)&skb->data[A];
       
   331 			if (nla->nla_len > A - skb->len)
       
   332 				return 0;
       
   333 
       
   334 			nla = nla_find_nested(nla, X);
   316 			if (nla)
   335 			if (nla)
   317 				A = (void *)nla - (void *)skb->data;
   336 				A = (void *)nla - (void *)skb->data;
   318 			else
   337 			else
   319 				A = 0;
   338 				A = 0;
   320 			continue;
   339 			continue;