Skip to content

Commit a45286c

Browse files
committed
Use ffi.buffer to better handle nulls
1 parent 1aefd9b commit a45286c

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

ada_url/ada_adapter.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,7 @@ def _get_obj(constructor, destructor, *args):
116116

117117

118118
def _get_str(x):
119-
ret = ffi.string(x.data, x.length).decode() if x.length else ''
120-
return ret
119+
return bytes(ffi.buffer(x.data, x.length)).decode() if x.length else ''
121120

122121

123122
class URL:

tests/test_ada_url.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,13 @@ def test_replace_search_params(self):
531531
expected = 'key2=value3&key1=value4&key1=value5'
532532
self.assertEqual(actual, expected)
533533

534+
def test_null_handling(self):
535+
evil_input = 'admin\x00hidden=true&safe=value'
536+
params = SearchParams(evil_input)
537+
actual = list(params.keys())
538+
expected = ['admin\x00hidden', 'safe']
539+
self.assertEqual(actual, expected)
540+
534541

535542
class ParseTests(TestCase):
536543
def test_url_suite(self):

0 commit comments

Comments
 (0)