rem: if ( !( ap->ops&AVPOPS_VAL_AVP ||
add: if ( !( ap->opd&AVPOPS_VAL_AVP ||
context: static int fixup_check_avp(void** param, int param_no){	struct fis_param *ap;	regex_t* re;	char *s;	s = (char*)*param;	ap = 0;	if (param_no==1)	{		if ( (ap=get_attr_or_alias(s))==0 )		{			LOG(L_ERR,"ERROR:avpops:fixup_check_avp: bad attribute name"				"/alias <%s>\n", (char*)*param);			return E_UNSPEC;		}		/* attr name is mandatory */		if (ap->opd&AVPOPS_VAL_NONE)		{			LOG(L_ERR,"ERROR:avpops:fixup_check_avp: you must specify "				"a name for the AVP\n");			return E_UNSPEC;		}	} else if (param_no==2) {		if ( (ap=parse_check_value(s))==0 )		{			LOG(L_ERR,"ERROR:avpops:fixup_check_avp: failed to parse "				"checked value \n");			return E_UNSPEC;		}		/* if REGEXP op -> compile the expresion */		if (ap->ops&AVPOPS_OP_RE)		{			if ( (ap->opd&AVPOPS_VAL_STR)==0 )			{				LOG(L_ERR,"ERROR:avpops:fixup_check_avp: regexp operation "					"requires string value\n");				return E_UNSPEC;			}			re = pkg_malloc(sizeof(regex_t));			if (re==0)			{				LOG(L_ERR,"ERROR:avpops:fixup_check_avp: no more pkg mem\n");				return E_OUT_OF_MEM;			}			DBG("DEBUG:avpops:fixup_check_avp: compiling regexp <%s>\n",				ap->val.s->s);			if (regcomp(re, ap->val.s->s, REG_EXTENDED|REG_ICASE|REG_NEWLINE))			{				pkg_free(re);				LOG(L_ERR,"ERROR:avpops:fixip_check_avp: bad re <%s>\n",					ap->val.s->s);				return E_BAD_RE;			}			/* free the string and link the regexp */			pkg_free(ap->val.s);			ap->val.s = (str*)re;		} else if (ap->ops&AVPOPS_OP_FM) {			if ( !( ap->ops&AVPOPS_VAL_AVP ||			(!(ap->opd&AVPOPS_VAL_AVP) && ap->opd&AVPOPS_VAL_STR) ) )			{				LOG(L_ERR,"ERROR:avpops:fixup_check_avp: fast_match operation "					"requires string value or avp name/alias (%d/%d)\n",					ap->opd, ap->ops);				return E_UNSPEC;			}		}	}	pkg_free(*param);	*param=(void*)ap;	return 0;}