add: cred = (auth_body_t*)h->parsed;
context: static inline int authorize(struct sip_msg* _msg, str* _realm, int _hftype){	int res;	auth_result_t ret;	struct hdr_field* h;	auth_body_t* cred;	str* uri;	struct sip_uri puri;	str user, domain;	domain = *_realm;	ret = pre_auth_func(_msg, &domain, _hftype, &h);	cred = (auth_body_t*)h->parsed;		switch(ret) {	case ERROR:            return 0;	case NOT_AUTHORIZED:   return -1;	case DO_AUTHORIZATION: break;	case AUTHORIZED:       return 1;	}	if (get_uri(_msg, &uri) < 0) {		LOG(L_ERR, "authorize(): From/To URI not found\n");		return -1;	}		if (parse_uri(uri->s, uri->len, &puri) < 0) {		LOG(L_ERR, "authorize(): Error while parsing From/To URI\n");		return -1;	}	if (puri.host.len != cred->digest.realm.len) {		DBG("authorize(): Credentials realm and URI host do not match\n");   		return -1;	}	if (strncasecmp(puri.host.s, cred->digest.realm.s, puri.host.len) != 0) {		DBG("authorize(): Credentials realm and URI host do not match\n");		return -1;	}	user.s = (char *)pkg_malloc(puri.user.len);	un_escape(&(puri.user), &user);	res = radius_authorize_sterman(&cred->digest, &_msg->first_line.u.request.method, &user);	pkg_free(user.s);	if (res == 1) {		ret = post_auth_func(_msg, h);		switch(ret) {		case ERROR:          return 0;		case NOT_AUTHORIZED: return -1;		case AUTHORIZED:     return 1;		default:             return -1;		}	}	return -1;}