- reorder safety checks not to access msg structure if null
static inline int do_auth(struct sip_msg *_m, struct hdr_field *_h, str *_realm,
str *_method, str *_secret)
{
static inline int do_auth(struct sip_msg *_m, struct hdr_field *_h, str *_realm,
str *_method, str *_secret)
{
char ha1[512];
auth_body_t *cred = (auth_body_t*) _h->parsed;
char ha1[512];
auth_body_t *cred = (auth_body_t*) _h->parsed;
ret = eph_auth_api.check_response(&cred->digest, _method, ha1);
if (ret == AUTHENTICATED)
{
ret = eph_auth_api.check_response(&cred->digest, _method, ha1);
if (ret == AUTHENTICATED)
{
- if (eph_auth_api.post_auth(_m, _h, ha1) != AUTHENTICATED)
- {
+ if (eph_auth_api.post_auth(_m, _h, ha1) != AUTHENTICATED) {
- }
- else if (ret == NOT_AUTHENTICATED)
- {
+ return AUTH_OK;
+ } else if (ret == NOT_AUTHENTICATED) {
return AUTH_INVALID_PASSWORD;
return AUTH_INVALID_PASSWORD;
+ } else {
+ return AUTH_ERROR;
- else
- {
- ret = AUTH_ERROR;
- }
-
- return AUTH_OK;
}
int autheph_verify_timestamp(str *_username)
}
int autheph_verify_timestamp(str *_username)
hdr_types_t _hftype, str *_method)
{
struct hdr_field* h;
hdr_types_t _hftype, str *_method)
{
struct hdr_field* h;
+ auth_cfg_result_t ret;
+ auth_result_t rauth;
struct secret *secret_struct;
str username;
LM_DBG("realm: %.*s\n", _realm->len, _realm->s);
LM_DBG("method: %.*s\n", _method->len, _method->s);
struct secret *secret_struct;
str username;
LM_DBG("realm: %.*s\n", _realm->len, _realm->s);
LM_DBG("method: %.*s\n", _method->len, _method->s);
- ret = eph_auth_api.pre_auth(_m, _realm, _hftype, &h, NULL);
- switch(ret)
+ rauth = eph_auth_api.pre_auth(_m, _realm, _hftype, &h, NULL);
+ switch(rauth)
{
case NONCE_REUSED:
LM_DBG("nonce reused\n");
{
case NONCE_REUSED:
LM_DBG("nonce reused\n");
- if (_m->REQ_METHOD == METHOD_ACK || _m->REQ_METHOD == METHOD_CANCEL)
- {
- return AUTH_OK;
- }
-
if(_m == NULL || _realm == NULL)
{
LM_ERR("invalid parameters\n");
return AUTH_ERROR;
}
if(_m == NULL || _realm == NULL)
{
LM_ERR("invalid parameters\n");
return AUTH_ERROR;
}
+ if (_m->REQ_METHOD == METHOD_ACK || _m->REQ_METHOD == METHOD_CANCEL)
+ {
+ return AUTH_OK;
+ }
+
if (get_str_fparam(&srealm, _m, (fparam_t*)_realm) < 0)
{
LM_ERR("failed to get realm value\n");
if (get_str_fparam(&srealm, _m, (fparam_t*)_realm) < 0)
{
LM_ERR("failed to get realm value\n");
- if (_m->REQ_METHOD == METHOD_ACK || _m->REQ_METHOD == METHOD_CANCEL)
- {
- return AUTH_OK;
- }
-
if(_m == NULL || _realm == NULL)
{
LM_ERR("invalid parameters\n");
return AUTH_ERROR;
}
if(_m == NULL || _realm == NULL)
{
LM_ERR("invalid parameters\n");
return AUTH_ERROR;
}
+ if (_m->REQ_METHOD == METHOD_ACK || _m->REQ_METHOD == METHOD_CANCEL)
+ {
+ return AUTH_OK;
+ }
+
if (get_str_fparam(&srealm, _m, (fparam_t*)_realm) < 0)
{
LM_ERR("failed to get realm value\n");
if (get_str_fparam(&srealm, _m, (fparam_t*)_realm) < 0)
{
LM_ERR("failed to get realm value\n");
- if (_m->REQ_METHOD == METHOD_ACK || _m->REQ_METHOD == METHOD_CANCEL)
- {
- return AUTH_OK;
- }
-
if(_m == NULL || _realm == NULL)
{
LM_ERR("invalid parameters\n");
return AUTH_ERROR;
}
if(_m == NULL || _realm == NULL)
{
LM_ERR("invalid parameters\n");
return AUTH_ERROR;
}
+ if (_m->REQ_METHOD == METHOD_ACK || _m->REQ_METHOD == METHOD_CANCEL)
+ {
+ return AUTH_OK;
+ }
+
if (get_str_fparam(&srealm, _m, (fparam_t*)_realm) < 0)
{
LM_ERR("failed to get realm value\n");
if (get_str_fparam(&srealm, _m, (fparam_t*)_realm) < 0)
{
LM_ERR("failed to get realm value\n");