# NixOS Workstations Setup v1.2 LAB ## Correctif bloquant La v1.1 calculait `m_authorizedUser` dans la liste d'initialisation du constructeur alors que ce membre était déclaré **avant** `m_currentUser` et `m_targetUser` dans la classe. En C++, l'ordre réel d'initialisation suit l'ordre de déclaration des membres, et non l'ordre de la liste du constructeur. Le booléen pouvait donc être évalué avant la construction des deux chaînes, provoquant notamment : ```text ERREUR: l'assistant est prévu pour alice mais il est exécuté par alice ``` La v1.2 supprime complètement ce booléen mémorisé. `authorizedUser()` résout désormais le compte cible avec `getpwnam()` et compare son UID avec `geteuid()`. L'autorisation ne dépend donc plus de l'ordre d'initialisation ni d'une comparaison de chaînes. La compilation GCC/Clang active aussi `-Werror=reorder` afin qu'une future incohérence d'ordre d'initialisation des membres fasse échouer le build. ## Diagnostic `--diagnose` affiche aussi les deux noms d'utilisateur en hexadécimal UTF-8 afin de rendre visibles d'éventuels caractères invisibles : ```bash nixos-workstations-setup --target-user alice --diagnose ``` Pour `alice`, le résultat attendu contient : ```text current_user=alice target_user=alice current_user_utf8_hex=616c696365 target_user_utf8_hex=616c696365 authorized=yes ``` ## Comportement attendu L'assistant modifie les secrets de **l'utilisateur qui l'exécute**. Il doit donc être lancé dans la session `alice` avec `--target-user alice`. Une exécution depuis `localadm` avec `--target-user alice` est volontairement refusée.