hey tout ce que j'ai écrit du code sur microsoft VS qui est supposé comparer les mots de passe entrés à ceux stockés dans la base de données et de retour approuvé ou refusé ... bon sur Windows, mais après la conversion en UNIX (en utilisant éclipse) une chose amusante se produit - toujours, le premier appel à cette fonction ne retourne pas la valeur approuvée quand il le devrait, mais appelant à nouveau la fonction avec exactement les mêmes paramètres. . comme voulu. après le débogage je suis assez sûr que le problème est dans le "strcmp", qui renvoie false sur la première exécution et vrai dans tous les autres exécutions sur les mêmes paramètres.C UNIX strcmp première utilisation est erronée, corriger tous les autres fois
quelqu'un a une idée sur ce qui pourrait être le problème ??
un exemple pour une commande: add jt 111 // ajouter le mot de passe à la DB
connexion jt 111
nié
connexion jt 111
approuvé
void login_helper(char *user, char *password){
int found = 0;
int i;
for (i=0 ; i<space ; i++){
if (strcasecmp(data[i].name,user) == 0) {
found = 1;
if (strcmp(data[i].hash ,Md5FromString(password)) == 0)
{
printf("approved.\n");
break;
}
else {
printf("denied.\n");
break;
}
}
}
if (found == 0) printf("denied.\n");
}
Postez le code ou il n'a pas eu lieu. :) –
@Matteo Italia Il a posté le code, il ne l'a pas formaté, et parce que le '<' est coincé sur 'l'espace' dans la boucle for, Markdown l'a traité comme HTML (invalide). – zneak
@yuval, avez-vous considéré que le problème venait peut-être de votre fonction Md5FromString? – zneak