]> andersk Git - libfaim.git/commitdiff
- Wed May 16 12:48:13 PDT 2001
authormid <mid>
Wed, 16 May 2001 19:59:27 +0000 (19:59 +0000)
committermid <mid>
Wed, 16 May 2001 19:59:27 +0000 (19:59 +0000)
  - Thanks Rob and Eric

CHANGES
utils/faimtest/faimtest.c

diff --git a/CHANGES b/CHANGES
index b7a35bbf5fff6e282433a5d28871bb523d28c1c3..a010095a18a68060a592554722b980bb6ee2d997 100644 (file)
--- 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?
 
index b294ca90165c28bd4dc095d22bdf1c73aa3f9e5e..3f9857bad3d7ea9840321fb3b3eeae0f65461217 100644 (file)
@@ -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 {
 
This page took 0.381396 seconds and 5 git commands to generate.