strip null characters from MB queries (#142)

This commit is contained in:
Adrian Sampson 2011-02-28 10:08:09 -08:00
parent d59c66af6a
commit 5437b30688
3 changed files with 12 additions and 1 deletions

1
NEWS
View file

@ -20,6 +20,7 @@
copies afterward). This is fixed.
* Fix a bug where some files would be erroneously interpreted as MP4.
* Fix permission bits applied to album art files.
* Fix malformed MusicBrainz queries caused by null characters.
* The old "albumify" plugin for upgrading databases was removed.
1.0b6

View file

@ -127,7 +127,8 @@ def _lucene_escape(text):
string.
"""
# Regex stolen from MusicBrainz Picard.
return re.sub(r'([+\-&|!(){}\[\]\^"~*?:\\])', r'\\\1', text)
out = re.sub(r'([+\-&|!(){}\[\]\^"~*?:\\])', r'\\\1', text)
return out.replace('\x00', '')
def find_releases(criteria, limit=SEARCH_LIMIT):
"""Get a list of release dictionaries from the MusicBrainz

View file

@ -146,6 +146,15 @@ class MBReleaseDictTest(unittest.TestCase):
d = mb.release_dict(release)
self.assertTrue(d['va'])
class QuerySanitationTest(unittest.TestCase):
def test_special_char_escaped(self):
res = mb._lucene_escape('!')
self.assertEqual(res, '\\!')
def test_null_character_removed(self):
res = mb._lucene_escape('\0')
self.assertEqual(res, '')
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)