cyrus-sasl i cyrus-sasl-md5sum-passwords.patch
Andrzej Nakonieczny
anakonieczny.pld-devel-pl w e-list.pingwin.eu.org
Pon, 12 Lis 2007, 22:56:03 CET
Witam
Czy ktoś mógłby spojrzeć na w/w patch dołączany do cyrus-sasl.spec?
Wygląda na to, że niepoprawnie liczy skrót MD5 czego efektem jest błędne
działanie (brak autoryzacji) - czy wina leży po stronie funkcji
_sasl_MD5* czy też niewłaściwego ich wykorzystania to tego nie wiem.
Zmieniłem nieco kod aby zobaczyć co się w środku wyprawia:
const char *_sasl_md5sum(const char *src) {
[...]
FILE *flog;
umask (022);
flog = fopen ("/tmp/md5.log", "a+");
fprintf (flog, "->1<->%s<-\n", src);
_sasl_MD5Init(&ctx);
_sasl_MD5Update(&ctx, src, strlen(src));
_sasl_MD5Final(&md5, &ctx);
fprintf (flog, "->2<->%s<-\n", md5);
[...]
md5sum[j] = 0;
fprintf (flog, "->3<->%s<-\n", md5sum);
fclose (flog);
return(md5sum);
}
i efekt był zdecydowanie daleki od właściwego:
->1<->haslo<-
->2<->[tutaj 10-cio bajtowy ciąg binarny]<-
->3<->207023<-
Z powyższego widać, że coś jest nie tak - md5 (poz. 2) powinno mieć
długość 16-tu bajtów, a nie 10. Wynik w postaci hex (poz. 3) powinien
mieć 32 bajty.
W związku z powyższym mam pytanie czy komuś to kiedykolwiek chodziło?
Potrzebne mi to jest aby hasła przechowywać w db, jako skrót md5.
Pozdrawiam,
Andrzej
Więcej informacji o liście dyskusyjnej pld-devel-pl