From da6b7516f187b85e7f9a8a2390f02e9c1dc2c7aa Mon Sep 17 00:00:00 2001
From: "zhaozhao.zz" <zhaozhao.zz@alibaba-inc.com>
Date: Wed, 18 Jul 2018 00:12:24 +0800
Subject: [PATCH] Streams: XTRIM  will return an error if MAXLEN with a count <
 0

---
 src/t_stream.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/t_stream.c b/src/t_stream.c
index 5814aa132..bab5b74ff 100644
--- a/src/t_stream.c
+++ b/src/t_stream.c
@@ -2192,7 +2192,7 @@ void xtrimCommand(client *c) {
 
     /* Argument parsing. */
     int trim_strategy = TRIM_STRATEGY_NONE;
-    long long maxlen = 0;   /* 0 means no maximum length. */
+    long long maxlen = -1;  /* If left to -1 no trimming is performed. */
     int approx_maxlen = 0;  /* If 1 only delete whole radix tree nodes, so
                                the maxium length is not applied verbatim. */
 
@@ -2211,6 +2211,11 @@ void xtrimCommand(client *c) {
             }
             if (getLongLongFromObjectOrReply(c,c->argv[i+1],&maxlen,NULL)
                 != C_OK) return;
+
+            if (maxlen < 0) {
+                addReplyError(c,"The MAXLEN argument must be >= 0.");
+                return;
+            }
             i++;
         } else {
             addReply(c,shared.syntaxerr);