diff options
author | Derrick Lyndon Pallas <derrick@argosylabs.com> | 2019-04-06 01:00:25 +0000 |
---|---|---|
committer | Derrick Lyndon Pallas <derrick@argosylabs.com> | 2019-04-06 01:00:44 +0000 |
commit | 74715b12b0770a3f724565633128f73396f0f792 (patch) | |
tree | f82eb67c30096763179f81beb313847b415dfd01 /src/lib/protocols/memcached.c | |
parent | a455e0d8d48a479d5d43023316cb97cb012b78fa (diff) |
memcached: fix invalid read on short packet
Diffstat (limited to 'src/lib/protocols/memcached.c')
-rw-r--r-- | src/lib/protocols/memcached.c | 3 |
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"); |