diff options
author | Roland Hedberg <roland.hedberg@adm.umu.se> | 2014-09-12 15:14:43 +0200 |
---|---|---|
committer | Roland Hedberg <roland.hedberg@adm.umu.se> | 2014-09-12 15:14:43 +0200 |
commit | 58400479eeae275f15676f1a66767c95704809cc (patch) | |
tree | 20aad5b5e2563d4f75ce77c27109466ca9b7bcb9 | |
parent | 4e90463dd06c155a0f713841c66577316742cf2b (diff) | |
parent | fba25be4771634d1d92ee359b55472c928aaf7f1 (diff) | |
download | pysaml2-58400479eeae275f15676f1a66767c95704809cc.tar.gz |
Merge pull request #139 from zaccone/fix-leaking-descriptors
Prevent sigve from leaking file descriptors.
-rw-r--r-- | src/saml2/sigver.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/saml2/sigver.py b/src/saml2/sigver.py index bc5a4d59..a4a2bebf 100644 --- a/src/saml2/sigver.py +++ b/src/saml2/sigver.py @@ -106,6 +106,11 @@ class CertificateError(SigverError): pass +def read_file(*args, **kwargs): + with open(*args, **kwargs) as handler: + return handler.read() + + def rm_xmltag(statement): try: _t = statement.startswith(XMLTAG) @@ -540,7 +545,7 @@ def pem_format(key): def import_rsa_key_from_file(filename): - return RSA.importKey(open(filename, 'r').read()) + return RSA.importKey(read_file(filename, 'r')) def parse_xmlsec_output(output): @@ -648,11 +653,13 @@ def read_cert_from_file(cert_file, cert_type): :param cert_type: The certificate type :return: A base64 encoded certificate as a string or the empty string """ + + if not cert_file: return "" if cert_type == "pem": - line = open(cert_file).read().split("\n") + line = read_file(cert_file).split("\n") if line[0] == "-----BEGIN CERTIFICATE-----": line = line[1:] elif line[0] == "-----BEGIN PUBLIC KEY-----": @@ -672,7 +679,7 @@ def read_cert_from_file(cert_file, cert_type): return "".join(line) if cert_type in ["der", "cer", "crt"]: - data = open(cert_file).read() + data = read_file(cert_file) return base64.b64encode(str(data)) |