From f9fe0fa9680734b3bf770402b55180a504cdb809 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Wed, 12 Oct 2016 11:53:51 +0200 Subject: [PATCH] Fix account_creator leak --- coreapi/account_creator.c | 16 +++-- .../linphone/core/LinphoneAccountCreator.java | 61 +++++++++---------- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/coreapi/account_creator.c b/coreapi/account_creator.c index 33af3da87..4de28cbab 100644 --- a/coreapi/account_creator.c +++ b/coreapi/account_creator.c @@ -299,6 +299,7 @@ const char * linphone_account_creator_get_username(const LinphoneAccountCreator LinphoneAccountCreatorStatus linphone_account_creator_set_phone_number(LinphoneAccountCreator *creator, const char *phone_number, const char *country_code) { char *normalized_phone_number; + LinphoneAccountCreatorStatus return_status; if (!phone_number || !country_code) { if (!phone_number && !country_code) { creator->phone_number = NULL; @@ -322,19 +323,24 @@ LinphoneAccountCreatorStatus linphone_account_creator_set_phone_number(LinphoneA const LinphoneDialPlan* plan = linphone_dial_plan_by_ccc(creator->phone_country_code); int size = (int)strlen(phone_number); if (linphone_dial_plan_is_generic(plan)) { - return LinphoneAccountCreatorCountryCodeInvalid; + return_status = LinphoneAccountCreatorCountryCodeInvalid; + goto end; } if (size < plan->nnl - 1) { - return LinphoneAccountCreatorPhoneNumberTooShort; + return_status = LinphoneAccountCreatorPhoneNumberTooShort; + goto end; } else if (size > plan->nnl + 1) { - return LinphoneAccountCreatorPhoneNumberTooLong; + return_status = LinphoneAccountCreatorPhoneNumberTooLong; + goto end; } } } set_string(&creator->phone_number, normalized_phone_number, TRUE); - ms_free(normalized_phone_number); + return_status = LinphoneAccountCreatorOK; - return LinphoneAccountCreatorOK; +end: + ms_free(normalized_phone_number); + return return_status; } const char * linphone_account_creator_get_phone_number(const LinphoneAccountCreator *creator) { diff --git a/java/common/org/linphone/core/LinphoneAccountCreator.java b/java/common/org/linphone/core/LinphoneAccountCreator.java index d39712239..b8cad8c44 100644 --- a/java/common/org/linphone/core/LinphoneAccountCreator.java +++ b/java/common/org/linphone/core/LinphoneAccountCreator.java @@ -38,39 +38,38 @@ public interface LinphoneAccountCreator { static private Vector values = new Vector(); private final int mValue; private final String mStringValue; - private static int mStatusNum = 0; public final int value() { return mValue; } - public final static Status Ok = new Status(mStatusNum++, "Ok"); - public final static Status Failed = new Status(mStatusNum++, "Failed"); - public final static Status AccountCreated = new Status(mStatusNum++, "AccountCreated"); - public final static Status AccountNotCreated = new Status(mStatusNum++, "AccountNotCreated"); - public final static Status AccountExist = new Status(mStatusNum++, "AccountExist"); - public final static Status AccountExistWithAlias = new Status(mStatusNum++, "AccountExistWithAlias"); - public final static Status AccountNotExist = new Status(mStatusNum++, "AccountNotExist"); - public final static Status AccountActivated = new Status(mStatusNum++, "AccountActivated"); - public final static Status AccountAlreadyActivated = new Status(mStatusNum++, "AccountAlreadyActivated"); - public final static Status AccountNotActivated = new Status(mStatusNum++, "AccountNotActivated"); - public final static Status AccountLinked = new Status(mStatusNum++, "AccountLinked"); - public final static Status AccountNotLinked = new Status(mStatusNum++, "AccountNotLinked"); - public final static Status EmailInvalid = new Status(mStatusNum++, "EmailInvalid"); - public final static Status UsernameInvalid = new Status(mStatusNum++, "UsernameInvalid"); - public final static Status UsernameTooShort = new Status(mStatusNum++, "UsernameTooShort"); - public final static Status UsernameTooLong = new Status(mStatusNum++, "UsernameTooLong"); - public final static Status UsernameInvalidSize = new Status(mStatusNum++, "UsernameInvalidSize"); - public final static Status PhoneNumberInvalid = new Status(mStatusNum++, "PhoneNumberInvalid"); - public final static Status PhoneNumberTooShort = new Status(mStatusNum++, "PhoneNumberTooShort"); - public final static Status PhoneNumberTooLong = new Status(mStatusNum++, "PhoneNumberTooLong"); - public final static Status PhoneNumberUsedAccount = new Status(mStatusNum++, "PhoneNumberUsed"); - public final static Status PhoneNumberUsedAlias = new Status(mStatusNum++, "PhoneNumberUsed"); - public final static Status PhoneNumberNotUsed = new Status(mStatusNum++, "PhoneNumberNotUsed"); - public final static Status PasswordTooShort = new Status(mStatusNum++, "PasswordTooShort"); - public final static Status PasswordTooLong = new Status(mStatusNum++, "PasswordTooLong"); - public final static Status DomainInvalid = new Status(mStatusNum++, "DomainInvalid"); - public final static Status RouteInvalid = new Status(mStatusNum++, "RouteInvalid"); - public final static Status DisplayNameInvalid = new Status(mStatusNum++, "DisplayNameInvalid"); - public final static Status TransportNotSupported = new Status(mStatusNum++, "TransportNotSupported"); - public final static Status CountryCodeInvalid = new Status(mStatusNum++, "CountryCodeInvalid"); + public final static Status Ok = new Status(0, "Ok"); + public final static Status Failed = new Status(1, "Failed"); + public final static Status AccountCreated = new Status(2, "AccountCreated"); + public final static Status AccountNotCreated = new Status(3, "AccountNotCreated"); + public final static Status AccountExist = new Status(4, "AccountExist"); + public final static Status AccountExistWithAlias = new Status(5, "AccountExistWithAlias"); + public final static Status AccountNotExist = new Status(6, "AccountNotExist"); + public final static Status AccountActivated = new Status(7, "AccountActivated"); + public final static Status AccountAlreadyActivated = new Status(8, "AccountAlreadyActivated"); + public final static Status AccountNotActivated = new Status(9, "AccountNotActivated"); + public final static Status AccountLinked = new Status(10, "AccountLinked"); + public final static Status AccountNotLinked = new Status(11, "AccountNotLinked"); + public final static Status EmailInvalid = new Status(12, "EmailInvalid"); + public final static Status UsernameInvalid = new Status(13, "UsernameInvalid"); + public final static Status UsernameTooShort = new Status(14, "UsernameTooShort"); + public final static Status UsernameTooLong = new Status(15, "UsernameTooLong"); + public final static Status UsernameInvalidSize = new Status(16, "UsernameInvalidSize"); + public final static Status PhoneNumberInvalid = new Status(17, "PhoneNumberInvalid"); + public final static Status PhoneNumberTooShort = new Status(18, "PhoneNumberTooShort"); + public final static Status PhoneNumberTooLong = new Status(19, "PhoneNumberTooLong"); + public final static Status PhoneNumberUsedAccount = new Status(20, "PhoneNumberUsed"); + public final static Status PhoneNumberUsedAlias = new Status(21, "PhoneNumberUsed"); + public final static Status PhoneNumberNotUsed = new Status(22, "PhoneNumberNotUsed"); + public final static Status PasswordTooShort = new Status(23, "PasswordTooShort"); + public final static Status PasswordTooLong = new Status(24, "PasswordTooLong"); + public final static Status DomainInvalid = new Status(25, "DomainInvalid"); + public final static Status RouteInvalid = new Status(26, "RouteInvalid"); + public final static Status DisplayNameInvalid = new Status(27, "DisplayNameInvalid"); + public final static Status TransportNotSupported = new Status(28, "TransportNotSupported"); + public final static Status CountryCodeInvalid = new Status(29, "CountryCodeInvalid"); private Status(int value, String stringValue) { mValue = value;