Merge pull request #1811 from rubenk/backport-cve-2016-6254-to-4.10
authorRuben Kerkhof <ruben@rubenkerkhof.com>
Wed, 27 Jul 2016 12:42:54 +0000 (14:42 +0200)
committerGitHub <noreply@github.com>
Wed, 27 Jul 2016 12:42:54 +0000 (14:42 +0200)
network plugin: Fix heap overflow in parse_packet().

src/network.c

index f379a5c..c2d20be 100644 (file)
@@ -1429,6 +1429,7 @@ static int parse_packet (sockent_t *se, /* {{{ */
                                printed_ignore_warning = 1;
                        }
                        buffer = ((char *) buffer) + pkg_length;
+                       buffer_size -= (size_t) pkg_length;
                        continue;
                }
 #endif /* HAVE_LIBGCRYPT */
@@ -1456,6 +1457,7 @@ static int parse_packet (sockent_t *se, /* {{{ */
                                printed_ignore_warning = 1;
                        }
                        buffer = ((char *) buffer) + pkg_length;
+                       buffer_size -= (size_t) pkg_length;
                        continue;
                }
 #endif /* HAVE_LIBGCRYPT */
@@ -1578,6 +1580,7 @@ static int parse_packet (sockent_t *se, /* {{{ */
                        DEBUG ("network plugin: parse_packet: Unknown part"
                                        " type: 0x%04hx", pkg_type);
                        buffer = ((char *) buffer) + pkg_length;
+                       buffer_size -= (size_t) pkg_length;
                }
        } /* while (buffer_size > sizeof (part_header_t)) */