[FIX] hw_drivers: Protect a subprocess call

we execute a subprocess without checking if an error occurs
so we place the subprocess.call() in a try except

closes odoo/odoo#152331

X-original-commit: 4adda36260f3ba0fdf75688b419593006b80adb7
Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
This commit is contained in:
lejeune quentin
2024-02-05 08:34:52 +00:00
parent b5e74f47c9
commit 8f6bfb2961
+9 -7
View File
@@ -199,13 +199,15 @@ def generate_password():
"""
alphabet = 'abcdefghijkmnpqrstuvwxyz23456789'
password = ''.join(secrets.choice(alphabet) for i in range(12))
shadow_password = crypt.crypt(password, crypt.mksalt())
subprocess.call(('sudo', 'usermod', '-p', shadow_password, 'pi'))
with writable():
subprocess.call(('sudo', 'cp', '/etc/shadow', '/root_bypass_ramdisks/etc/shadow'))
return password
try:
shadow_password = crypt.crypt(password, crypt.mksalt())
subprocess.run(('sudo', 'usermod', '-p', shadow_password, 'pi'), check=True)
with writable():
subprocess.run(('sudo', 'cp', '/etc/shadow', '/root_bypass_ramdisks/etc/shadow'), check=True)
return password
except subprocess.CalledProcessError as e:
_logger.error("Failed to generate password: %s", e.output)
return 'Error: Check IoT log'
def get_certificate_status(is_first=True):