Push parser fix by Jonathan P. Chapman <chapman@cs.uni-bonn.de>
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Tue, 6 Apr 2010 05:46:45 +0000 (07:46 +0200)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Tue, 6 Apr 2010 05:46:45 +0000 (07:46 +0200)
src/parser.c

index 620dd4e..6d3a2ab 100644 (file)
@@ -336,6 +336,18 @@ parse_packet(struct olsr *olsr, int size, struct interface *in_if, union olsr_ip
       seqno = ntohs(m->v6.seqno);
     }
 
+    if (msgsize == 0) {
+      struct ipaddr_str buf;
+      union olsr_ip_addr *msgorig = (union olsr_ip_addr *) &m->v4.originator;
+      OLSR_PRINTF(1, "Error, OLSR message from %s (type %d) is zero lengthed"
+          ", ignoring all further content of the packet\n",
+          olsr_ip_to_string(&buf, msgorig), m->v4.olsr_msgtype);
+      olsr_syslog(OLSR_LOG_ERR, "Error, OLSR message from %s (type %d) is zero"
+          "lengthed, ignoring all further content of the packet\n",
+          olsr_ip_to_string(&buf, msgorig), m->v4.olsr_msgtype);
+      break;
+    }
+
     if ((msgsize % 4) != 0) {
       struct ipaddr_str buf;
       union olsr_ip_addr *msgorig = (union olsr_ip_addr *) &m->v4.originator;