diff options
author | Michael Elkins <melkins@tislabs.com> | 2014-10-31 18:16:46 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2014-10-31 18:16:46 +0000 |
commit | 8d64bbe752850c927f786d56aee3e9f274ec9b0f (patch) | |
tree | 562dcbc228601bc2a071c69260d47d60fe5cdb0d /rpki | |
parent | 63fc9d2a18b53aa5489b9560b6137d45071a52bd (diff) |
test for empty prefix list when filtering routing table to avoid returning the entire table. closes #731
svn path=/trunk/; revision=6001
Diffstat (limited to 'rpki')
-rw-r--r-- | rpki/gui/app/models.py | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/rpki/gui/app/models.py b/rpki/gui/app/models.py index 21a86487..d3b0733d 100644 --- a/rpki/gui/app/models.py +++ b/rpki/gui/app/models.py @@ -153,11 +153,15 @@ class Conf(rpki.irdb.models.ResourceHolderCA): """ # build a Q filter to select all RouteOrigin objects covered by # prefixes in the resource holder's certificates - q = models.Q() - for p in ResourceRangeAddressV4.objects.filter(cert__conf=self): - q |= models.Q(prefix_min__gte=p.prefix_min, + prefixes = ResourceRangeAddressV4.objects.filter(cert__conf=self) + if prefixes: + q = models.Q() + for p in prefixes: + q |= models.Q(prefix_min__gte=p.prefix_min, prefix_max__lte=p.prefix_max) - return RouteOrigin.objects.filter(q) + return RouteOrigin.objects.filter(q) + else: + return RouteOrigin.objects.none() @property def routes_v6(self): @@ -167,11 +171,15 @@ class Conf(rpki.irdb.models.ResourceHolderCA): """ # build a Q filter to select all RouteOrigin objects covered by # prefixes in the resource holder's certificates - q = models.Q() - for p in ResourceRangeAddressV6.objects.filter(cert__conf=self): - q |= models.Q(prefix_min__gte=p.prefix_min, - prefix_max__lte=p.prefix_max) - return RouteOriginV6.objects.filter(q) + prefixes = ResourceRangeAddressV6.objects.filter(cert__conf=self) + if prefixes: + q = models.Q() + for p in ResourceRangeAddressV6.objects.filter(cert__conf=self): + q |= models.Q(prefix_min__gte=p.prefix_min, + prefix_max__lte=p.prefix_max) + return RouteOriginV6.objects.filter(q) + else: + return RouteOriginV6.objects.none() def send_alert(self, subject, message, from_email, severity=Alert.INFO): """Store an alert for this resource holder.""" |