Merge ~andreserl/maas:2.3_lp1758760 into maas:2.3

Proposed by Andres Rodriguez
Status: Merged
Approved by: Andres Rodriguez
Approved revision: b040294cdda534d28b90598373d8bea09aff8168
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~andreserl/maas:2.3_lp1758760
Merge into: maas:2.3
Diff against target: 34 lines (+10/-2)
2 files modified
src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py (+6/-2)
src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py (+4/-0)
Reviewer Review Type Date Requested Status
Andres Rodriguez (community) Approve
Review via email: mp+342326@code.launchpad.net

Commit message

Backport e3e619165309a6f180a3366d8d8d4372521bb8bb from master

LP: #1758760 - Ensure there's no two consecutive occurrences of the same character

To post a comment you must log in.
Revision history for this message
Andres Rodriguez (andreserl) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py b/src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py
2index cd53215..49a9424 100644
3--- a/src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py
4+++ b/src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py
5@@ -301,8 +301,12 @@ def generate_random_password(
6 # Create the extra characters to fullfill max_length
7 letters += ''.join([
8 random.choice(string.ascii_letters) for _ in range(length - 7)])
9- # Randomly mix the password
10- return ''.join(random.sample(letters, len(letters)))
11+ # LP: #1758760 - Randomly mix the password until we ensure there's
12+ # not consecutive occurrences of the same character.
13+ password = ''.join(random.sample(letters, len(letters)))
14+ while (bool(re.search(r'(.)\1', password))):
15+ password = ''.join(random.sample(letters, len(letters)))
16+ return password
17 else:
18 letters = string.ascii_letters + string.digits
19 return ''.join([random.choice(letters) for _ in range(length)])
20diff --git a/src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py b/src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py
21index 31ef8c3..e79740b 100644
22--- a/src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py
23+++ b/src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py
24@@ -513,6 +513,10 @@ class TestGeneratesAcceptablePasswords(MAASTestCase):
25 required_character_sets += 1
26 if required_character_sets < 2:
27 return False
28+ # Test password doesn't have two or more occurrences of the
29+ # the same consecutive character.
30+ if bool(re.search(r'(.)\1', password)):
31+ return False
32 return True
33 max_attempts = 100
34 acceptable = 0

Subscribers

People subscribed via source and target branches