Skip to content

Commit fa4cc0c

Browse files
author
Yann
authored
Merge pull request #266 from DataDog/yann/rm-api-key-logs
[http_client] remove `requests` exception contexts
2 parents b1468cf + 8dc512e commit fa4cc0c

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

datadog/api/http_client.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@
2727
log = logging.getLogger('datadog.api')
2828

2929

30+
def _remove_context(exc):
31+
"""Python3: remove context from chained exceptions to prevent leaking API keys in tracebacks."""
32+
exc.__cause__ = None
33+
return exc
34+
35+
3036
class HTTPClient(object):
3137
"""
3238
An abstract generic HTTP client. Subclasses must implement the `request` methods.
@@ -73,15 +79,15 @@ def request(cls, method, url, headers, params, data, timeout, proxies, verify, m
7379
result.raise_for_status()
7480

7581
except requests.ConnectionError as e:
76-
raise ClientError(method, url, e)
82+
raise _remove_context(ClientError(method, url, e))
7783
except requests.exceptions.Timeout:
78-
raise HttpTimeout(method, url, timeout)
84+
raise _remove_context(HttpTimeout(method, url, timeout))
7985
except requests.exceptions.HTTPError as e:
8086
if e.response.status_code in (400, 403, 404, 409):
8187
# This gets caught afterwards and raises an ApiError exception
8288
pass
8389
else:
84-
raise HTTPError(e.response.status_code, result.reason)
90+
raise _remove_context(HTTPError(e.response.status_code, result.reason))
8591
except TypeError as e:
8692
raise TypeError(
8793
u"Your installed version of `requests` library seems not compatible with"

0 commit comments

Comments
 (0)