From a6d022f0bb7a5e14be243c11fe612b3e1cc3507a Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Wed, 20 Jun 2018 11:14:46 +0200 Subject: [PATCH] avoid invalid read in event_tester callbacks --- tester/eventapi_tester.c | 14 +++++++++----- tester/liblinphone_tester.h | 1 + tester/tester.c | 3 ++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/tester/eventapi_tester.c b/tester/eventapi_tester.c index 8324a587e..4eddf6db7 100644 --- a/tester/eventapi_tester.c +++ b/tester/eventapi_tester.c @@ -43,10 +43,18 @@ void linphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char * /*hack to disable content checking for list notify */ BC_ASSERT_STRING_EQUAL(linphone_content_get_string_buffer(content), notify_content); } - mgr=get_manager(lc); + mgr = get_manager(lc); mgr->stat.number_of_NotifyReceived++; } +void linphone_subscribe_received(LinphoneCore *lc, LinphoneEvent *lev, const char *eventname, const LinphoneContent *content) { + LinphoneCoreManager *mgr = get_manager(lc); + if (!mgr->decline_subscribe) + linphone_event_accept_subscription(lev); + else + linphone_event_deny_subscription(lev, LinphoneReasonDeclined); +} + void linphone_subscription_state_change(LinphoneCore *lc, LinphoneEvent *lev, LinphoneSubscriptionState state) { stats* counters = get_stats(lc); LinphoneCoreManager *mgr=get_manager(lc); @@ -67,10 +75,6 @@ void linphone_subscription_state_change(LinphoneCore *lc, LinphoneEvent *lev, Li case LinphoneSubscriptionIncomingReceived: counters->number_of_LinphoneSubscriptionIncomingReceived++; mgr->lev=lev; - if (!mgr->decline_subscribe) - linphone_event_accept_subscription(lev); - else - linphone_event_deny_subscription(lev, LinphoneReasonDeclined); break; case LinphoneSubscriptionOutgoingProgress: counters->number_of_LinphoneSubscriptionOutgoingProgress++; diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index cac05db7d..46c657832 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -371,6 +371,7 @@ void new_subscription_requested(LinphoneCore *lc, LinphoneFriend *lf, const char void linphone_subscription_state_change(LinphoneCore *lc, LinphoneEvent *ev, LinphoneSubscriptionState state); void linphone_publish_state_changed(LinphoneCore *lc, LinphoneEvent *ev, LinphonePublishState state); void linphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char *eventname, const LinphoneContent *content); +void linphone_subscribe_received(LinphoneCore *lc, LinphoneEvent *lev, const char *eventname, const LinphoneContent *content); void linphone_configuration_status(LinphoneCore *lc, LinphoneConfiguringState status, const char *message); void linphone_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t on, const char *authentication_token); void dtmf_received(LinphoneCore *lc, LinphoneCall *call, int dtmf); diff --git a/tester/tester.c b/tester/tester.c index 5f6729c37..86a4d71c9 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -364,6 +364,7 @@ void linphone_core_manager_init(LinphoneCoreManager *mgr, const char* rc_file, c linphone_core_cbs_set_info_received(mgr->cbs, info_message_received); linphone_core_cbs_set_subscription_state_changed(mgr->cbs, linphone_subscription_state_change); linphone_core_cbs_set_notify_received(mgr->cbs, linphone_notify_received); + linphone_core_cbs_set_subscribe_received(mgr->cbs, linphone_subscribe_received); linphone_core_cbs_set_publish_state_changed(mgr->cbs, linphone_publish_state_changed); linphone_core_cbs_set_configuring_status(mgr->cbs, linphone_configuration_status); linphone_core_cbs_set_call_encryption_changed(mgr->cbs, linphone_call_encryption_changed); @@ -441,7 +442,7 @@ LinphoneCoreManager* linphone_core_manager_create(const char* rc_file) { LinphoneCoreManager* linphone_core_manager_new4(const char* rc_file, int check_for_proxies, const char* phone_alias, const char* contact_params, int expires) { /* This function is for testing purposes. */ LinphoneCoreManager *manager = ms_new0(LinphoneCoreManager, 1); - + linphone_core_manager_init(manager, rc_file, phone_alias); linphone_proxy_config_set_contact_parameters(linphone_core_get_default_proxy_config(manager->lc), contact_params); linphone_proxy_config_set_expires(linphone_core_get_default_proxy_config(manager->lc), expires);