static int check_heap(int verbose){ if (verbose){ dbg_printf("check_heap\n");} int flag=check_epi_pro(1)|check_align(1); flag|=check_hf(1)|check_coalesce(1); return flag; }
/* * Purpose of this function is to find credentials with given realm, * do sanity check, validate credential correctness and determine if * we should really authenticate (there must be no authentication for * ACK and CANCEL * @param hdr output param where the Authorize headerfield will be returned. * @param check_hdr pointer to the function checking Authorization header field */ auth_result_t pre_auth(struct sip_msg* msg, str* realm, hdr_types_t hftype, struct hdr_field** hdr, check_auth_hdr_t check_auth_hdr) { int ret; auth_body_t* c; check_auth_hdr_t check_hf; auth_result_t auth_rv; /* ACK and CANCEL must be always authenticated, there is * no way how to challenge ACK and CANCEL cannot be * challenged because it must have the same CSeq as * the request to be canceled. * PRACK is also not authenticated */ if (msg->REQ_METHOD & (METHOD_ACK|METHOD_CANCEL|METHOD_PRACK)) return AUTHENTICATED; /* Try to find credentials with corresponding realm * in the message, parse them and return pointer to * parsed structure */ strip_realm(realm); ret = find_credentials(msg, realm, hftype, hdr); if (ret < 0) { LOG(L_ERR, "auth:pre_auth: Error while looking for credentials\n"); return ERROR; } else if (ret > 0) { DBG("auth:pre_auth: Credentials with realm '%.*s' not found\n", realm->len, ZSW(realm->s)); return NO_CREDENTIALS; } /* Pointer to the parsed credentials */ c = (auth_body_t*)((*hdr)->parsed); /* digest headers are in c->digest */ DBG("auth: digest-algo: %.*s parsed value: %d\n", c->digest.alg.alg_str.len, c->digest.alg.alg_str.s, c->digest.alg.alg_parsed); if (mark_authorized_cred(msg, *hdr) < 0) { LOG(L_ERR, "auth:pre_auth: Error while marking parsed credentials\n"); return ERROR; } /* check authorization header field's validity */ if (check_auth_hdr == NULL) { check_hf = auth_check_hdr_md5; } else { /* use check function of external authentication module */ check_hf = check_auth_hdr; } /* use the right function */ if (!check_hf(msg, c, &auth_rv)) { return auth_rv; } return DO_AUTHENTICATION; }