Bonjour à tous,
J'adapte actuellement un programme développé en C sur un linux embarqué et j'ai un petit souci.
On crée un serveur Web depuis notre programme. Les page Web permettes de modifier certain paramètres de notre système (javascript). L'utilisateur entre le mot de passe root sur la page web avant de modifier les paramètres, je récupère bien ce mot de passe dans mon programme.
Mais avec notre ancien système, qui utilisait un linux minimaliste, ont récurerait le mot de passe du root grâce à shadow.h et l'on comparait simplement avec un strcmp. Aujourd'hui notre système est plus puissant et dispose d'un linux plus classique et cette fonctionne ne fonctionne plus.
Actuellement getspnam me retourne un NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int usr_log(const char *login, ///< [in] User login const char *pwd) ///< [in] User password (plaintext) { struct spwd *user; if ((user = getspnam(login)) == NULL) { return 0; } if (strcmp(user->sp_pwdp, pwd)) { return 0; } return 1; }
Je vous remercie par avance de votre aide.
Pour information je me connecte en ftp ou telnet sans souci avec le bon mot de passe qui se trouve dans /etc/passwd
Partager