aboutsummaryrefslogtreecommitdiffstats
path: root/main/memcached/CVE-2017-9951.patch
blob: a6f27365e492904f7a0a30a7f7a9c3d7f393ed15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
From 328629445c71e6c17074f6e9e0e3ef585b58f167 Mon Sep 17 00:00:00 2001
From: dormando <dormando@rydia.net>
Date: Tue, 4 Jul 2017 00:32:39 -0700
Subject: [PATCH] sanity check

---
 items.c     | 2 ++
 memcached.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/items.c b/items.c
index 637e5e745..83a2ea37d 100644
--- a/items.c
+++ b/items.c
@@ -368,6 +368,8 @@ void item_free(item *it) {
 bool item_size_ok(const size_t nkey, const int flags, const int nbytes) {
     char prefix[40];
     uint8_t nsuffix;
+    if (nbytes < 2)
+        return false;
 
     size_t ntotal = item_make_header(nkey + 1, flags, nbytes,
                                      prefix, &nsuffix);
diff --git a/memcached.c b/memcached.c
index 0f0335795..a89df965d 100644
--- a/memcached.c
+++ b/memcached.c
@@ -4967,7 +4967,7 @@ static void drive_machine(conn *c) {
 
         case conn_swallow:
             /* we are reading sbytes and throwing them away */
-            if (c->sbytes == 0) {
+            if (c->sbytes <= 0) {
                 conn_set_state(c, conn_new_cmd);
                 break;
             }