diff --git a/locales/en.json b/locales/en.json index 18ab84be1..694df0707 100644 --- a/locales/en.json +++ b/locales/en.json @@ -4,6 +4,7 @@ "admin_password": "Administration password", "admin_password_change_failed": "Unable to change password", "admin_password_changed": "The administration password has been changed", + "admin_password_too_long": "Please choose a password shorter than 127 characters", "app_already_installed": "{app:s} is already installed", "app_already_installed_cant_change_url": "This app is already installed. The url cannot be changed just by this function. Look into `app changeurl` if it's available.", "app_already_up_to_date": "{app:s} is already up to date", diff --git a/src/yunohost/tools.py b/src/yunohost/tools.py index a011b1546..42114c7e9 100644 --- a/src/yunohost/tools.py +++ b/src/yunohost/tools.py @@ -132,6 +132,11 @@ def tools_adminpw(auth, new_password, check_strength=True): if check_strength: assert_password_is_strong_enough("admin", new_password) + # UNIX seems to not like password longer than 127 chars ... + # e.g. SSH login gets broken (or even 'su admin' when entering the password) + if len(new_password) >= 127: + raise YunohostError('admin_password_too_long') + new_hash = _hash_user_password(new_password) try: