Fix degenerate case exponential runtime in regular expression use by
authorPeter Amstutz <peter.amstutz@curoverse.com>
Wed, 13 Aug 2014 18:06:40 +0000 (14:06 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Wed, 13 Aug 2014 18:06:40 +0000 (14:06 -0400)
CollectionReader to validate locators and manifests.  no issue #

sdk/python/arvados/collection.py

index 0c8b62080fd7056646fd555c1edb43dbd27d37a5..8fdfcf86c3e8f4bf5e136802ce1329592a53d10b 100644 (file)
@@ -93,10 +93,10 @@ def normalize(collection):
 
 class CollectionReader(object):
     def __init__(self, manifest_locator_or_text):
-        if re.search(r'^[a-f0-9]{32}(\+\d+)?(\+\S+)*$', manifest_locator_or_text):
+        if re.match(r'[a-f0-9]{32}(\+\d+)?(\+\S+)*$', manifest_locator_or_text):
             self._manifest_locator = manifest_locator_or_text
             self._manifest_text = None
-        elif re.search(r'^\S+( [a-f0-9]{32,}(\+\S+)*)*( \d+:\d+:\S+)+\n', manifest_locator_or_text):
+        elif re.match(r'(\S+)( [a-f0-9]{32}(\+\d+)(\+\S+)*)+( \d+:\d+:\S+)+', manifest_locator_or_text):
             self._manifest_text = manifest_locator_or_text
             self._manifest_locator = None
         else: