Make sure calculated header length does not skip over buffer
authorHenning Rogge <hrogge@googlemail.com>
Sun, 18 Nov 2012 19:06:43 +0000 (20:06 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Sun, 18 Nov 2012 19:06:43 +0000 (20:06 +0100)
lib/bmf/src/Bmf.c

index f21ef20..5d5964b 100644 (file)
@@ -1005,6 +1005,11 @@ BMF_handle_listeningFd(int skfd, void *data, unsigned int flags __attribute__ ((
    * not) be 4 (bytes) larger than the value returned on a non-VLAN interface, for
    * the same ethernet frame. */
   headerLength = GetIpHeaderLength(rxBuffer);
+  if (headerLength >= BMF_BUFFER_SIZE) {
+    olsr_printf(1, "%s: IP header pretends to have a length of %u\n",
+        PLUGIN_NAME, headerLength);
+    return;
+  }
   minimumLength =
     headerLength +
     sizeof(struct udphdr) +