From 001c9b80011b5cb7de24a181916e939863951234 Mon Sep 17 00:00:00 2001 From: mid Date: Mon, 23 Apr 2001 23:04:38 +0000 Subject: [PATCH] - Mon Apr 23 15:58:11 PDT 2001 - On a clear day, you can see forever. --- CHANGES | 3 +++ src/login.c | 36 ++++++++++++++++++++++++++++++++++++ utils/faimtest/faimtest.c | 22 +++++++++++++--------- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index 3cbdd9a..5488d4b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ No release numbers ------------------ + - Mon Apr 23 15:58:11 PDT 2001 + - On a clear day, you can see forever. + - Thu Mar 29 13:05:50 PST 2001 - Less leaks. diff --git a/src/login.c b/src/login.c index fef6db4..7b36b97 100644 --- a/src/login.c +++ b/src/login.c @@ -741,6 +741,28 @@ static int memrequest(struct aim_session_t *sess, aim_module_t *mod, struct comm return 0; } +static void dumpbox(struct aim_session_t *sess, unsigned char *buf, int len) +{ + int i = 0; + + if (!sess || !buf || !len) + return; + + faimdprintf(sess, 1, "\nDump of %d bytes at %p:", len, buf); + + for (i = 0; i < len; i++) + { + if ((i % 8) == 0) + faimdprintf(sess, 1, "\n\t"); + + faimdprintf(sess, 1, "0x%2x ", buf[i]); + } + + faimdprintf(sess, 1, "\n\n"); + + return; +} + faim_export int aim_sendmemblock(struct aim_session_t *sess, struct aim_conn_t *conn, unsigned long offset, unsigned long len, const unsigned char *buf) { struct command_tx_struct *tx; @@ -765,6 +787,20 @@ faim_export int aim_sendmemblock(struct aim_session_t *sess, struct aim_conn_t * md5_finish(&state, (md5_byte_t *)(tx->data+i)); i += 0x10; + } else if (len == 0) { /* no length, just hash NULL (buf is optional) */ + md5_state_t state; + unsigned char nil = '\0'; + + /* + * These MD5 routines are stupid in that you have to have + * at least one append. So thats why this doesn't look + * real logical. + */ + md5_init(&state); + md5_append(&state, (const md5_byte_t *)&nil, 0); + md5_finish(&state, (md5_byte_t *)(tx->data+i)); + i += 0x10; + } else { if ((offset != 0x00001004) || (len != 0x00000004)) diff --git a/utils/faimtest/faimtest.c b/utils/faimtest/faimtest.c index 0610242..b5d9076 100644 --- a/utils/faimtest/faimtest.c +++ b/utils/faimtest/faimtest.c @@ -803,6 +803,8 @@ static int getaimdata(unsigned char *buf, int buflen, unsigned long offset, cons static const char defaultmod[] = "aim.exe"; char *filename = NULL; + memset(buf, 0, buflen); + if (modname) { if (!(filename = malloc(strlen(aimbinarypath)+1+strlen(modname)+4+1))) { @@ -833,16 +835,18 @@ static int getaimdata(unsigned char *buf, int buflen, unsigned long offset, cons free(filename); - if (fseek(f, offset, SEEK_SET) == -1) { - dperror("memrequest: fseek"); - fclose(f); - return -1; - } + if (buflen) { + if (fseek(f, offset, SEEK_SET) == -1) { + dperror("memrequest: fseek"); + fclose(f); + return -1; + } - if (fread(buf, buflen, 1, f) != 1) { - dperror("memrequest: fread"); - fclose(f); - return -1; + if (fread(buf, buflen, 1, f) != 1) { + dperror("memrequest: fread"); + fclose(f); + return -1; + } } fclose(f); -- 2.45.1