Skip to content

Commit e4872e0

Browse files
author
Mike Taylor
committed
Issue #1030. Be more paranoid and make sure we have a string before parsing a UA.
1 parent 5eb5505 commit e4872e0

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

tests/test_helpers.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ def test_get_browser_name(self):
136136
self.assertEqual(get_browser_name(None), 'unknown')
137137
self.assertEqual(get_browser_name(), 'unknown')
138138
self.assertEqual(get_browser_name(u'💀'), 'unknown')
139+
self.assertEqual(get_browser('<script>lol()</script>'), 'Unknown')
140+
self.assertEqual(get_browser(True), 'Unknown')
141+
self.assertEqual(get_browser(False), 'Unknown')
142+
self.assertEqual(get_browser(None), 'Unknown')
139143

140144
def test_get_browser(self):
141145
'''Test Browser parsing for non-tablet devices.'''
@@ -151,9 +155,12 @@ def test_get_browser(self):
151155
'Chrome Mobile 18.0.1025')
152156
self.assertEqual(get_browser(CHROME_TABLET_UA), 'Chrome 18.0.1025')
153157
self.assertEqual(get_browser(''), 'Unknown')
154-
self.assertEqual(get_browser(None), 'Unknown')
155158
self.assertEqual(get_browser(), 'Unknown')
156159
self.assertEqual(get_browser(u'💀'), 'Unknown')
160+
self.assertEqual(get_browser('<script>lol()</script>'), 'Unknown')
161+
self.assertEqual(get_browser(True), 'Unknown')
162+
self.assertEqual(get_browser(False), 'Unknown')
163+
self.assertEqual(get_browser(None), 'Unknown')
157164

158165
if __name__ == '__main__':
159166
unittest.main()

webcompat/helpers.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def get_browser(user_agent_string=None):
104104
105105
It will pre-populate the bug reporting form.
106106
'''
107-
if user_agent_string:
107+
if user_agent_string and isinstance(user_agent_string, basestring):
108108
ua_dict = user_agent_parser.Parse(user_agent_string)
109109
ua = ua_dict.get('user_agent')
110110
name = ua.get('family')
@@ -137,7 +137,7 @@ def get_browser_name(user_agent_string=None):
137137
138138
unknown user agents will be reported as "unknown".
139139
'''
140-
if user_agent_string:
140+
if user_agent_string and isinstance(user_agent_string, basestring):
141141
# get_browser will return something like 'Chrome Mobile 47.0'
142142
# we just want 'chrome mobile', i.e., the lowercase name
143143
# w/o the version
@@ -150,7 +150,7 @@ def get_os(user_agent_string=None):
150150
151151
It pre-populates the bug reporting form.
152152
'''
153-
if user_agent_string:
153+
if user_agent_string and isinstance(user_agent_string, basestring):
154154
ua_dict = user_agent_parser.Parse(user_agent_string)
155155
os = ua_dict.get('os')
156156
version = os.get('major', u'Unknown')

0 commit comments

Comments
 (0)