diff options
author | Michal Minar <miminar@redhat.com> | 2013-10-08 13:58:28 +0200 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2013-10-10 14:16:20 +0200 |
commit | 6fe1c7e848640c4979c865349fef882f26298fd6 (patch) | |
tree | 6e9814b5ba264e03e5ffd5ac816ac25ab60b4641 /src/software | |
parent | d69d26ad7bc0cecab13cf7172422d88288a32d70 (diff) | |
download | openlmi-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__.py | 15 |
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(): """ |