From: mid Date: Wed, 16 May 2001 19:59:27 +0000 (+0000) Subject: - Wed May 16 12:48:13 PDT 2001 X-Git-Tag: rel_0_99_2~42 X-Git-Url: http://andersk.mit.edu/gitweb/libfaim.git/commitdiff_plain/f6a4f6b718c13b23a8bd337392f4d67cee1f3e4e - Wed May 16 12:48:13 PDT 2001 - Thanks Rob and Eric --- diff --git a/CHANGES b/CHANGES index b7a35bb..a010095 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ No release numbers ------------------ + - Wed May 16 12:48:13 PDT 2001 + - Thanks Rob and Eric + - Thu May 10 17:37:23 PDT 2001 - I haven't had lunch yet. What should I have? diff --git a/utils/faimtest/faimtest.c b/utils/faimtest/faimtest.c index b294ca9..3f9857b 100644 --- a/utils/faimtest/faimtest.c +++ b/utils/faimtest/faimtest.c @@ -852,42 +852,59 @@ static int getaimdata(unsigned char **bufret, int *buflenret, unsigned long offs } if (stat(filename, &st) == -1) { - dperror("memrequest: stat"); - free(filename); - return -1; + if (!modname) { + dperror("memrequest: stat"); + free(filename); + return -1; + } + invalid = 1; } - if ((offset > st.st_size) || (len > st.st_size)) - invalid = 1; - else if ((st.st_size - offset) < len) - len = st.st_size - offset; - else if ((st.st_size - len) < len) - len = st.st_size - len; + if (!invalid) { + if ((offset > st.st_size) || (len > st.st_size)) + invalid = 1; + else if ((st.st_size - offset) < len) + len = st.st_size - offset; + else if ((st.st_size - len) < len) + len = st.st_size - len; + } if (!invalid && len) len %= 4096; if (invalid) { + int i; free(filename); /* not needed */ - if (!(buf = malloc(8))) + dvprintf("memrequest: recieved invalid request for 0x%08lx bytes at 0x%08lx (file %s)\n", len, offset, modname); + + i = 8; + if (modname) + i += strlen(modname); + + if (!(buf = malloc(i))) return -1; - dvprintf("memrequest: recieved invalid request for 0x%08lx bytes at 0x%08lx\n", len, offset); + i = 0; + + if (modname) { + memcpy(buf, modname, strlen(modname)); + i += strlen(modname); + } /* Damn endianness. This must be little (LSB first) endian. */ - buf[0] = offset & 0xff; - buf[1] = (offset >> 8) & 0xff; - buf[2] = (offset >> 16) & 0xff; - buf[3] = (offset >> 24) & 0xff; - buf[4] = len & 0xff; - buf[5] = (len >> 8) & 0xff; - buf[6] = (len >> 16) & 0xff; - buf[7] = (len >> 24) & 0xff; + buf[i++] = offset & 0xff; + buf[i++] = (offset >> 8) & 0xff; + buf[i++] = (offset >> 16) & 0xff; + buf[i++] = (offset >> 24) & 0xff; + buf[i++] = len & 0xff; + buf[i++] = (len >> 8) & 0xff; + buf[i++] = (len >> 16) & 0xff; + buf[i++] = (len >> 24) & 0xff; *bufret = buf; - *buflenret = 8; + *buflenret = i; } else {