aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/memcached.c
diff options
context:
space:
mode:
authorDerrick Lyndon Pallas <derrick@argosylabs.com>2019-04-06 01:00:25 +0000
committerDerrick Lyndon Pallas <derrick@argosylabs.com>2019-04-06 01:00:44 +0000
commit74715b12b0770a3f724565633128f73396f0f792 (patch)
treef82eb67c30096763179f81beb313847b415dfd01 /src/lib/protocols/memcached.c
parenta455e0d8d48a479d5d43023316cb97cb012b78fa (diff)
memcached: fix invalid read on short packet
Diffstat (limited to 'src/lib/protocols/memcached.c')
-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");