diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index f3382220ab..6b6f901a57 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Wed Feb 11 10:16:40 CST 2009 +Wed Feb 11 10:18:18 CST 2009 diff --git a/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c b/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c index 20d1287204..1feb81d66d 100644 --- a/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c +++ b/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c @@ -128,11 +128,17 @@ int auc_challenge(auth_client_t **auc_list, if (!matched) { /* There was no matching authenticator, create a new one */ *cca = ca_create(home, scheme, realm); - if (ca_challenge((*cca), ch, crcl, scheme, realm) < 0) { + + if (*cca == NULL) { + return -1; + } + else if (ca_challenge((*cca), ch, crcl, scheme, realm) < 0) { ca_destroy(home, *cca), *cca = NULL; return -1; } - retval = 1; /* Updated authenticator */ + /* XXX - case w/ unknown authentication scheme */ + else + retval = 1; /* Updated authenticator */ } } diff --git a/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h b/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h index 36104ec8bd..cc1d2d83cf 100644 --- a/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h +++ b/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h @@ -98,7 +98,8 @@ struct auth_client_plugin /** Check if authentication client has been extended. @NEW_1_12_6. */ #define AUTH_CLIENT_IS_EXTENDED(ca) \ - ((ca)->ca_auc->auc_plugin_size > \ + ((ca)->ca_auc && \ + (ca)->ca_auc->auc_plugin_size > \ (int)offsetof(auth_client_plugin_t, auc_clear) \ && (ca)->ca_auc->auc_clear != NULL)