aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuca Deri <lucaderi@users.noreply.github.com>2019-04-12 19:19:46 +0200
committerGitHub <noreply@github.com>2019-04-12 19:19:46 +0200
commit6f8a01ca18e7fa9fe133c0ad7afb52bc194e2bba (patch)
tree6b09acd5ba70a895f3aa193a4195a2d9f5e27746 /src
parent5b6526cc5ae7c396a33a75c6a4935f5bf266f907 (diff)
parent74715b12b0770a3f724565633128f73396f0f792 (diff)
Merge pull request #695 from pallas/avoid-memcached-short-read
memcached: fix invalid read on short packet
Diffstat (limited to 'src')
-rw-r--r--src/lib/protocols/memcached.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lib/protocols/memcached.c b/src/lib/protocols/memcached.c
index e9deb5cc9..44a8b0858 100644
--- a/src/lib/protocols/memcached.c
+++ b/src/lib/protocols/memcached.c
@@ -89,7 +89,7 @@
#define MEMCACHED_MIN_MATCH 2 /* Minimum number of command/responses required */
-#define MEMCACHED_MATCH(cr) memcmp(offset, cr, cr ## _LEN)
+#define MEMCACHED_MATCH(cr) (cr ## _LEN > length || memcmp(offset, cr, cr ## _LEN))
static void ndpi_int_memcached_add_connection(struct ndpi_detection_module_struct
*ndpi_struct, struct ndpi_flow_struct *flow)
@@ -105,6 +105,7 @@ void ndpi_search_memcached(
{
struct ndpi_packet_struct *packet = &flow->packet;
const u_int8_t *offset = packet->payload;
+ const u_int16_t length = packet->payload_packet_len;
u_int8_t *matches;
NDPI_LOG_DBG(ndpi_struct, "search memcached\n");