Fix: unlock database

This commit is contained in:
L0m1g 2025-05-03 16:11:28 +02:00
parent f664d07c77
commit 63fc1ffd0e
5 changed files with 17 additions and 7 deletions

View file

@ -39,9 +39,9 @@ def run_as_user(username):
try:
pid = os.fork()
if pid > 0:
# Parent
# Parent : attendre le child, ne pas exit, juste return proprement
_, status = os.waitpid(pid, 0)
return os.WEXITSTATUS(status)
return status >> 8 # récupère le code retour du fils (comme exit code)
# Child
pw_record = pwd.getpwnam(username)
@ -51,14 +51,13 @@ def run_as_user(username):
os.setgid(user_gid)
os.setuid(user_uid)
# Exécuter la fonction sous l'utilisateur demandé
result = func(*args, **kwargs)
sys.exit(0 if result is None else int(bool(result)))
os._exit(0 if result is None else int(bool(result)))
except OSError as e:
print(f"[SECURITY] Fork échoué : {e}")
sys.exit(1)
os._exit(1)
return wrapper
return decorator
return decorator