From 3a9f0934c41c85ea7fa87165b9559f08814645cd Mon Sep 17 00:00:00 2001
From: Kelly Brazil <kellyjonbrazil@gmail.com>
Date: Tue, 30 Nov 2021 09:56:33 -0800
Subject: [PATCH] add input type checks

---
 jc/parsers/ls_s.py | 6 ++++--
 tests/test_ls_s.py | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/jc/parsers/ls_s.py b/jc/parsers/ls_s.py
index 48e80d57..cb7b33f5 100644
--- a/jc/parsers/ls_s.py
+++ b/jc/parsers/ls_s.py
@@ -123,13 +123,15 @@ def parse(data, raw=False, quiet=False, ignore_exceptions=False):
 
         Iterator object
     """
-    if not quiet:
-        jc.utils.compatibility(__name__, info.compatible)
+    if not quiet: jc.utils.compatibility(__name__, info.compatible)
+    if not hasattr(data, '__iter__') or isinstance(data, (str, bytes)):
+        raise TypeError("Input data must be a non-string iterable object.")
 
     parent = ''
 
     for line in data:
         try:
+            if not isinstance(line, str): raise TypeError("Input line must be a 'str' object.")
 
             # skip line if it starts with 'total 1234'
             if re.match(r'total [0-9]+', line):
diff --git a/tests/test_ls_s.py b/tests/test_ls_s.py
index 2922a487..a4fcac78 100644
--- a/tests/test_ls_s.py
+++ b/tests/test_ls_s.py
@@ -103,7 +103,7 @@ class MyTests(unittest.TestCase):
         """
         Test plain 'ls' on an empty directory
         """
-        self.assertEqual(list(jc.parsers.ls_s.parse('', quiet=True)), [])
+        self.assertEqual(list(jc.parsers.ls_s.parse([], quiet=True)), [])
 
     def test_ls_s_centos_7_7_raise_exception(self):
         """