mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	Bugfix in interpret
Missing cases in filter code interpret leads to crash when bgp_next_hop attr was queried.
This commit is contained in:
		@@ -560,6 +560,15 @@ interpret(struct f_inst *what)
 | 
			
		||||
	res.type = T_INT;
 | 
			
		||||
	res.val.i = e->u.data;
 | 
			
		||||
	break;
 | 
			
		||||
      case EAF_TYPE_IP_ADDRESS:
 | 
			
		||||
	if (!e) {
 | 
			
		||||
	  res.type = T_VOID;
 | 
			
		||||
	  break;
 | 
			
		||||
	}
 | 
			
		||||
	res.type = T_IP;
 | 
			
		||||
	struct adata * ad = e->u.ptr;
 | 
			
		||||
	res.val.px.ip = * (ip_addr *) ad->data;
 | 
			
		||||
	break;
 | 
			
		||||
      case EAF_TYPE_AS_PATH:
 | 
			
		||||
	if (!e) {
 | 
			
		||||
	  res.type = T_VOID;
 | 
			
		||||
@@ -599,6 +608,14 @@ interpret(struct f_inst *what)
 | 
			
		||||
	  runtime( "Setting int attribute to non-int value" );
 | 
			
		||||
	l->attrs[0].u.data = v1.val.i;
 | 
			
		||||
	break;
 | 
			
		||||
      case EAF_TYPE_IP_ADDRESS:
 | 
			
		||||
	if (v1.type != T_IP)
 | 
			
		||||
	  runtime( "Setting ip attribute to non-ip value" );
 | 
			
		||||
	int len = sizeof(ip_addr);
 | 
			
		||||
	struct adata *ad = lp_alloc(f_pool, sizeof(struct adata) + len);
 | 
			
		||||
	ad->length = len;
 | 
			
		||||
	(* (ip_addr *) ad->data) = v1.val.px.ip;
 | 
			
		||||
	break;
 | 
			
		||||
      case EAF_TYPE_AS_PATH:
 | 
			
		||||
	if (v1.type != T_PATH)
 | 
			
		||||
	  runtime( "Setting path attribute to non-path value" );
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user