summaryrefslogtreecommitdiffstats
path: root/src/software
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2013-10-08 13:58:28 +0200
committerMichal Minar <miminar@redhat.com>2013-10-10 14:16:20 +0200
commit6fe1c7e848640c4979c865349fef882f26298fd6 (patch)
tree6e9814b5ba264e03e5ffd5ac816ac25ab60b4641 /src/software
parentd69d26ad7bc0cecab13cf7172422d88288a32d70 (diff)
downloadopenlmi-providers-6fe1c7e848640c4979c865349fef882f26298fd6.tar.gz
openlmi-providers-6fe1c7e848640c4979c865349fef882f26298fd6.tar.xz
openlmi-providers-6fe1c7e848640c4979c865349fef882f26298fd6.zip
software: fixed regular expressions matching identity
Regular expressions could parse nevra and envra strings wrongly. Also increased the rebustness of checks for SoftwareIdentity::InstanceID.
Diffstat (limited to 'src/software')
-rw-r--r--src/software/lmi/software/util/__init__.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/software/lmi/software/util/__init__.py b/src/software/lmi/software/util/__init__.py
index 43fd4ba..e5bcc11 100644
--- a/src/software/lmi/software/util/__init__.py
+++ b/src/software/lmi/software/util/__init__.py
@@ -36,16 +36,17 @@ RE_INSTANCE_ID = re.compile(r'LMI:(?P<clsname>[a-z][a-z_0-9]+):(?P<id>\d+)',
re.IGNORECASE)
RE_EVRA = re.compile(
- r'^(?P<epoch>\d+):(?P<version>[^-]+)-(?P<release>.+)\.(?P<arch>[^.]+)$')
+ r'^(?P<epoch>\d+):(?P<version>[\w.+{}]+)-(?P<release>[\w.+{}]+)'
+ r'\.(?P<arch>[^.]+)$')
RE_NEVRA = re.compile(
- r'^(?P<name>.+)-(?P<evra>(?P<epoch>\d+):(?P<version>[^-]+)'
- r'-(?P<release>.+)\.(?P<arch>[^.]+))$')
+ r'^(?P<name>.+)-(?P<evra>(?P<epoch>\d+):(?P<version>[\w.+{}]+)'
+ r'-(?P<release>[\w.+{}]+)\.(?P<arch>[^.]+))$')
RE_NEVRA_OPT_EPOCH = re.compile(
- r'^(?P<name>.+)-(?P<evra>((?P<epoch>\d+):)?(?P<version>[^-]+)'
- r'-(?P<release>.+)\.(?P<arch>[^.]+))$')
+ r'^(?P<name>.+)-(?P<evra>(?:(?P<epoch>\d+):)?(?P<version>[\w.+{}]+)'
+ r'-(?P<release>[\w.+{}]+)\.(?P<arch>[^.]+))$')
RE_ENVRA = re.compile(
- r'^(?P<epoch>\d+):(?P<name>.+)-(?P<evra>(?P<version>[^-]+)'
- r'-(?P<release>.+)\.(?P<arch>[^.]+))$')
+ r'^(?P<epoch>\d+):(?P<name>.+)-(?P<evra>(?P<version>[\w.+{}]+)'
+ r'-(?P<release>[\w.+{}]+)\.(?P<arch>[^.]+))$')
def _get_distname():
"""