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