X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fftp-opie.c;h=c32bcf05bab3dbeac9f1ed6d943d0fe462ab6823;hp=9c4a1ea51e080320dcc51d4e0536427ba7a9ac16;hb=2c0e2b0afa06c675a79239b49b92085daff4c7af;hpb=dc99d9a487fb8b99dcd70ac770ce0dd68cddaa07 diff --git a/src/ftp-opie.c b/src/ftp-opie.c index 9c4a1ea5..c32bcf05 100644 --- a/src/ftp-opie.c +++ b/src/ftp-opie.c @@ -2165,14 +2165,6 @@ btoe (char *store, const unsigned char *c) return store_beg; } -/* Calculate the MD5 checksum of SRC in one step. The MD5 context - must be declared as md5_ctx. */ -#define DO_MD5(src, len, dest) do { \ - gen_md5_init (md5_ctx); \ - gen_md5_update ((unsigned char *) (src), (len), md5_ctx); \ - gen_md5_finish (md5_ctx, (unsigned char *) (dest)); \ -} while (0) - /* Calculate the SKEY response, based on the sequence, seed (challenge), and the secret password. The calculated response is used instead of the real password when logging in to SKEY-enabled @@ -2211,18 +2203,19 @@ skey_response (int sequence, const char *seed, const char *pass) ALLOCA_MD5_CONTEXT (md5_ctx); uint32_t checksum[4]; - char *feed = (char *) alloca (strlen (seed) + strlen (pass) + 1); - strcpy (feed, seed); - strcat (feed, pass); - - DO_MD5 (feed, strlen (feed), checksum); + gen_md5_init (md5_ctx); + gen_md5_update ((const unsigned char *)seed, strlen(seed), md5_ctx); + gen_md5_update ((const unsigned char *)pass, strlen(pass), md5_ctx); + gen_md5_finish (md5_ctx, (unsigned char *)checksum); checksum[0] ^= checksum[2]; checksum[1] ^= checksum[3]; memcpy (key, checksum, 8); while (sequence-- > 0) { - DO_MD5 (key, 8, checksum); + gen_md5_init (md5_ctx); + gen_md5_update ((unsigned char *) key, 8, md5_ctx); + gen_md5_finish (md5_ctx, (unsigned char *) checksum); checksum[0] ^= checksum[2]; checksum[1] ^= checksum[3]; memcpy (key, checksum, 8);