From eed9e7063d9c50bd44c0b2d308c01414b01a0a5e Mon Sep 17 00:00:00 2001 From: Erik Ekman Date: Sun, 28 Jan 2007 04:10:37 +0000 Subject: [PATCH] Fix login_calculate on wrong endian --- src/login.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/login.c b/src/login.c index eac989a..3190233 100644 --- a/src/login.c +++ b/src/login.c @@ -23,6 +23,7 @@ void login_calculate(char *out, int len, char *pass, int seed) { char temp[32]; md5_state_t ctx; int i; + int k; int *ix; if (len < 16) { @@ -30,9 +31,11 @@ void login_calculate(char *out, int len, char *pass, int seed) { } memcpy(temp, pass, 32); - ix = (int *) temp; + ix = (int*) temp; for (i = 0; i < 8; i++) { - *ix++ ^= seed; + k = ntohl(*ix); + k ^= seed; + *ix++ = htonl(k); } md5_init(&ctx); md5_append(&ctx, temp, 32);