diff --git a/coreapi/account_creator.c b/coreapi/account_creator.c index 740345fa0..c929fb40a 100644 --- a/coreapi/account_creator.c +++ b/coreapi/account_creator.c @@ -184,13 +184,16 @@ static bool_t is_matching_regex(const char *entry, const char* regex) { } LinphoneAccountCreatorStatus linphone_account_creator_set_username(LinphoneAccountCreator *creator, const char *username) { - int min_length = lp_config_get_int(creator->core->config, "assistant", "username_min_length", 0); - int fixed_length = lp_config_get_int(creator->core->config, "assistant", "username_length", 0); + int min_length = lp_config_get_int(creator->core->config, "assistant", "username_min_length", -1); + int fixed_length = lp_config_get_int(creator->core->config, "assistant", "username_length", -1); + int max_length = lp_config_get_int(creator->core->config, "assistant", "username_max_length", -1); bool_t use_phone_number = lp_config_get_int(creator->core->config, "assistant", "use_phone_number", 0); const char* regex = lp_config_get_string(creator->core->config, "assistant", "username_regex", 0); LinphoneAccountCreatorStatus status; if (min_length > 0 && strlen(username) < min_length) { return LinphoneAccountCreatorUsernameTooShort; + } else if (max_length > 0 && strlen(username) > max_length) { + return LinphoneAccountCreatorUsernameTooLong; } else if (fixed_length > 0 && strlen(username) != fixed_length) { return LinphoneAccountCreatorUsernameInvalidSize; } else if (use_phone_number && !linphone_proxy_config_is_phone_number(NULL, username)) { @@ -209,9 +212,12 @@ const char * linphone_account_creator_get_username(const LinphoneAccountCreator } LinphoneAccountCreatorStatus linphone_account_creator_set_password(LinphoneAccountCreator *creator, const char *password){ - int min_length = lp_config_get_int(creator->core->config, "assistant", "password_min_length", 0); + int min_length = lp_config_get_int(creator->core->config, "assistant", "password_min_length", -1); + int max_length = lp_config_get_int(creator->core->config, "assistant", "password_max_length", -1); if (min_length > 0 && strlen(password) < min_length) { return LinphoneAccountCreatorPasswordTooShort; + } else if (max_length > 0 && strlen(password) > max_length) { + return LinphoneAccountCreatorPasswordTooLong; } set_string(&creator->password, password, FALSE); return LinphoneAccountCreatorOK; diff --git a/coreapi/account_creator.h b/coreapi/account_creator.h index fe6c46c3d..41730dcfa 100644 --- a/coreapi/account_creator.h +++ b/coreapi/account_creator.h @@ -51,8 +51,10 @@ typedef enum _LinphoneAccountCreatorStatus { LinphoneAccountCreatorEmailInvalid, LinphoneAccountCreatorUsernameInvalid, LinphoneAccountCreatorUsernameTooShort, + LinphoneAccountCreatorUsernameTooLong, LinphoneAccountCreatorUsernameInvalidSize, LinphoneAccountCreatorPasswordTooShort, + LinphoneAccountCreatorPasswordTooLong, LinphoneAccountCreatorDomainInvalid, LinphoneAccountCreatorRouteInvalid, LinphoneAccountCreatorDisplayNameInvalid,