X-Git-Url: http://andersk.mit.edu/gitweb/libfaim.git/blobdiff_plain/b1eac25ac75949707e082afcb8e0d702e536cef1..328837f7c91191445a83707b3ebb9b9e422a08c1:/utils/faimtest/faimtest.c diff --git a/utils/faimtest/faimtest.c b/utils/faimtest/faimtest.c index 35ca6a2..bc6656a 100644 --- a/utils/faimtest/faimtest.c +++ b/utils/faimtest/faimtest.c @@ -260,7 +260,7 @@ int logout(void) { if (ohcaptainmycaptain) - aim_send_im(&aimsess, aim_getconn_type(&aimsess, AIM_CONN_TYPE_BOS), ohcaptainmycaptain, 0, "ta ta..."); + aim_send_im(&aimsess, aim_getconn_type(&aimsess, AIM_CONN_TYPE_BOS), ohcaptainmycaptain, 0, "ta ta...", strlen("ta ta...")); aim_session_kill(&aimsess); @@ -797,11 +797,26 @@ int faimtest_handleredirect(struct aim_session_t *sess, struct command_rx_struct return 1; } -static int getaimdata(unsigned char *buf, int buflen, unsigned long offset) +static int getaimdata(unsigned char *buf, int buflen, unsigned long offset, char *modname) { FILE *f; - if (!(f = fopen(aimbinarypath, "r"))) { + char *filename; + int len; + + len = strlen(aimbinarypath)+1+strlen(modname)+1; + + if(!(filename = malloc(len))) { + dperror("memrequest: malloc"); + return -1; + } + + memset(filename,0, len); + memcpy(filename, aimbinarypath, strlen(aimbinarypath)); + filename[strlen(filename)] = '/'; + strncat(filename, modname, len - strlen(filename)); + + if (!(f = fopen(filename, "r"))) { dperror("memrequest: fopen"); return -1; } @@ -835,10 +850,12 @@ static int faimtest_memrequest(struct aim_session_t *sess, struct command_rx_str va_list ap; unsigned long offset, len; unsigned char *buf; + char *modname; va_start(ap, command); offset = va_arg(ap, unsigned long); len = va_arg(ap, unsigned long); + modname = va_arg(ap, char *); va_end(ap); if (!(buf = malloc(len))) { @@ -846,15 +863,15 @@ static int faimtest_memrequest(struct aim_session_t *sess, struct command_rx_str return 0; } - if (aimbinarypath && (getaimdata(buf, len, offset) == len)) { + if (aimbinarypath && (getaimdata(buf, len, offset, modname) == len)) { - dvprintf("memrequest: sending %ld bytes from 0x%08lx in %s...\n", len, offset, aimbinarypath); + dvprintf("memrequest: sending %ld bytes from 0x%08lx in \"%s/%s\"...\n", len, offset, aimbinarypath, modname); aim_sendmemblock(sess, command->conn, offset, len, buf); } else { - dprintf("memrequest: unable to use AIM binary, sending defaults...\n"); + dvprintf("memrequest: unable to use AIM binary (\"%s/%s\"), sending defaults...\n", aimbinarypath, modname); aim_sendmemblock(sess, command->conn, offset, len, NULL); @@ -1037,7 +1054,7 @@ static int faimtest_handlecmd(struct aim_session_t *sess, struct command_rx_stru } else if (strstr(tmpstr, "goodday")) { - aim_send_im(sess, command->conn, userinfo->sn, AIM_IMFLAGS_ACK, "Good day to you too."); + aim_send_im(sess, command->conn, userinfo->sn, AIM_IMFLAGS_ACK, "Good day to you too.", strlen("Good day to you too.")); } else if (strstr(tmpstr, "warnme")) { @@ -1063,7 +1080,7 @@ static int faimtest_handlecmd(struct aim_session_t *sess, struct command_rx_stru if (!ohcaptainmycaptain) { - aim_send_im(sess, command->conn, userinfo->sn, AIM_IMFLAGS_ACK, "I have no owner!"); + aim_send_im(sess, command->conn, userinfo->sn, AIM_IMFLAGS_ACK, "I have no owner!", strlen("I have no owner!")); } else { struct aim_conn_t *newconn; @@ -1117,7 +1134,7 @@ static int faimtest_handlecmd(struct aim_session_t *sess, struct command_rx_stru } else if (!strncmp(tmpstr, "reqsendmsg", 10)) { - aim_send_im(sess, command->conn, ohcaptainmycaptain, 0, "sendmsg 7900"); + aim_send_im(sess, command->conn, ohcaptainmycaptain, 0, "sendmsg 7900", strlen("sendmsg 7900")); } else if (!strncmp(tmpstr, "reqauth", 7)) { @@ -1151,7 +1168,7 @@ static int faimtest_handlecmd(struct aim_session_t *sess, struct command_rx_stru newbuf[z] = (z % 10)+0x30; } newbuf[i] = '\0'; - aim_send_im(sess, command->conn, userinfo->sn, 0, newbuf); + aim_send_im(sess, command->conn, userinfo->sn, 0, newbuf, strlen(newbuf)); free(newbuf); } @@ -1803,7 +1820,7 @@ int faimtest_chat_incomingmsg(struct aim_session_t *sess, struct command_rx_stru if (strcmp(userinfo->sn, sess->sn) != 0) { sprintf(tmpbuf, "(%s said \"%s\")", userinfo->sn, msg); - aim_chat_send_im(sess, command->conn, tmpbuf); + aim_chat_send_im(sess, command->conn, 0, tmpbuf, strlen(tmpbuf)); } return 1;