Author: mikej Date: Wed Feb 11 10:18:36 2009 New Revision: 11779 Log: Thu Jan 8 13:04:03 CST 2009 Pekka Pessi <first.last@nokia.com> * auth_client: do not crash with unknown authentication schemes Modified: freeswitch/trunk/libs/sofia-sip/.update freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h Modified: freeswitch/trunk/libs/sofia-sip/.update ============================================================================== --- freeswitch/trunk/libs/sofia-sip/.update (original) +++ freeswitch/trunk/libs/sofia-sip/.update Wed Feb 11 10:18:36 2009 @@ -1 +1 @@ -Wed Feb 11 10:16:40 CST 2009 +Wed Feb 11 10:18:18 CST 2009 Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c ============================================================================== --- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c (original) +++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c Wed Feb 11 10:18:36 2009 @@ -128,11 +128,17 @@ 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 */ } } Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h ============================================================================== --- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h (original) +++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h Wed Feb 11 10:18:36 2009 @@ -98,7 +98,8 @@ /** 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)