Skip to content

Commit bfa31ef

Browse files
author
Roland Hedberg
committed
Fixed a recursion problem.
Minor editorial changes.
1 parent 2ff66de commit bfa31ef

File tree

5 files changed

+26
-20
lines changed

5 files changed

+26
-20
lines changed

example/idp2/idp.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -943,10 +943,10 @@ def application(environ, start_response):
943943

944944
AUTHN_BROKER = AuthnBroker()
945945
AUTHN_BROKER.add(authn_context_class_ref(PASSWORD),
946-
username_password_authn, 10,
947-
"http://%s" % socket.gethostname())
946+
username_password_authn, 10,
947+
"http://%s" % socket.gethostname())
948948
AUTHN_BROKER.add(authn_context_class_ref(UNSPECIFIED),
949-
"", 0, "http://%s" % socket.gethostname())
949+
"", 0, "http://%s" % socket.gethostname())
950950

951951
IDP = server.Server(args.config, cache=Cache())
952952
IDP.ticket = {}

src/saml2/client_base.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,6 @@ def create_authn_request(self, destination, vorg="", scoping=None,
315315
protocol_binding=binding,
316316
scoping=scoping, **args)
317317

318-
319318
def create_attribute_query(self, destination, name_id=None,
320319
attribute=None, message_id=0, consent=None,
321320
extensions=None, sign=False, sign_prepare=False,

src/saml2/mdstore.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ def repack_cert(cert):
103103

104104

105105
class MetaData(object):
106-
def __init__(self, onts, attrc, metadata="", node_name=None, **kwargs):
106+
def __init__(self, onts, attrc, metadata="", node_name=None,
107+
check_validity=True, **kwargs):
107108
self.onts = onts
108109
self.attrc = attrc
109110
self.entity = {}
@@ -112,6 +113,7 @@ def __init__(self, onts, attrc, metadata="", node_name=None, **kwargs):
112113
self.node_name = node_name
113114
self.entities_descr = None
114115
self.entity_descr = None
116+
self.check_validity = check_validity
115117

116118
def items(self):
117119
return self.entity.items()
@@ -129,13 +131,14 @@ def __getitem__(self, item):
129131
return self.entity[item]
130132

131133
def do_entity_descriptor(self, entity_descr):
132-
try:
133-
if not valid(entity_descr.valid_until):
134-
logger.info("Entity descriptor (entity id:%s) to old" % (
135-
entity_descr.entity_id,))
136-
return
137-
except AttributeError:
138-
pass
134+
if self.check_validity:
135+
try:
136+
if not valid(entity_descr.valid_until):
137+
logger.info("Entity descriptor (entity id:%s) to old" % (
138+
entity_descr.entity_id,))
139+
return
140+
except AttributeError:
141+
pass
139142

140143
# have I seen this entity_id before ? If so if log: ignore it
141144
if entity_descr.entity_id in self.entity:
@@ -187,12 +190,14 @@ def parse(self, xmlstr):
187190
logger.error(exc.args[0])
188191
return
189192

190-
try:
191-
if not valid(self.entities_descr.valid_until):
192-
raise ToOld("Metadata not valid anymore, it's after %s" % (
193-
self.entities_descr.valid_until,))
194-
except AttributeError:
195-
pass
193+
if self.check_validity:
194+
try:
195+
if not valid(self.entities_descr.valid_until):
196+
raise ToOld(
197+
"Metadata not valid anymore, it's after %s" % (
198+
self.entities_descr.valid_until,))
199+
except AttributeError:
200+
pass
196201

197202
for entity_descr in self.entities_descr.entity_descriptor:
198203
self.do_entity_descriptor(entity_descr)

src/saml2/response.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -451,8 +451,8 @@ class AuthnResponse(StatusResponse):
451451
def __init__(self, sec_context, attribute_converters, entity_id,
452452
return_addrs=None, outstanding_queries=None,
453453
timeslack=0, asynchop=True, allow_unsolicited=False,
454-
test=False, allow_unknown_attributes=False, want_assertions_signed=False,
455-
**kwargs):
454+
test=False, allow_unknown_attributes=False,
455+
want_assertions_signed=False, **kwargs):
456456

457457
StatusResponse.__init__(self, sec_context, return_addrs, timeslack,
458458
asynchop=asynchop)

src/saml2/validate.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@ def valid_anytype(val):
248248
:return: True is value is valid otherwise an exception is raised
249249
"""
250250
for validator in VALIDATOR.values():
251+
if validator == valid_anytype: # To hinder recursion
252+
continue
251253
try:
252254
if validator(val):
253255
return True

0 commit comments

Comments
 (0)