]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
suricatasc: Handle incomplete/empty recv values
authorJeff Lucovsky <jeff@lucovsky.org>
Tue, 11 Jan 2022 19:16:24 +0000 (14:16 -0500)
committerShivani Bhardwaj <shivanib134@gmail.com>
Thu, 20 Jan 2022 14:45:04 +0000 (20:15 +0530)
Issue: 4947

Improve handling of values returned by recv. Sometimes, recv returns an
empty string if suricata terminates asynchronously.

(cherry picked from commit fc6fdef07006e5382839ef88873e90754b30e6e0)

python/suricata/sc/suricatasc.py

index e3235ce4aa385399f26a62db4c8c9deb03069a5d..fa0638961d4835c916159e7d07e407b07cb8eac0 100644 (file)
@@ -118,9 +118,14 @@ class SuricataSC:
         data = ""
         while True:
             if sys.version < '3':
-                data += self.socket.recv(INC_SIZE)
+                received = self.socket.recv(INC_SIZE)
             else:
-                data += self.socket.recv(INC_SIZE).decode('iso-8859-1')
+                received = self.socket.recv(INC_SIZE).decode('iso-8859-1')
+
+            if not received:
+                break
+
+            data += received
             if data.endswith('\n'):
                 cmdret = json.loads(data)
                 break