Fix potential KeyError in raise_dropbox_error_for_resp and replace eval()#527
Closed
neuralbroker wants to merge 1 commit into
Closed
Fix potential KeyError in raise_dropbox_error_for_resp and replace eval()#527neuralbroker wants to merge 1 commit into
neuralbroker wants to merge 1 commit into
Conversation
…al() in setup.py
1. Fix potential KeyError in raise_dropbox_error_for_resp() - use .get('error') instead of ['error'] to avoid KeyError when JSON doesn't contain the error key. Also catch AttributeError alongside ValueError.
2. Replace eval() with safe string parsing in setup.py
|
Hi @neuralbroker , thank you for reporting this. We've passed this on to our team to review as well, but we can't promise if or when any changes will be merged or implemented. We appreciate you taking the time to contribute to the Python SDK. |
AndreyVMarkelov
added a commit
that referenced
this pull request
Jul 10, 2026
…e validation (#535) - Retry the token-refresh POST on 5xx (InternalServerError) using the same exponential backoff as request_json_string_with_retry, honoring max_retries_on_error. Previously a 5xx during refresh bypassed retries entirely (#518). - raise_dropbox_error_for_resp: use res.json().get('error') and catch AttributeError so a 400 body lacking the "error" key raises BadInputError instead of KeyError (#527). - clone(): pass self._raw_user_agent instead of self._user_agent so cloned clients don't get the OfficialDropboxPythonSDKv2 suffix appended twice (#526). - Reorder scope validation to check isinstance before len(), so a non-list scope raises BadInputException instead of TypeError, in the client constructor, refresh_access_token, and DropboxOAuth2FlowBase (#526). Adds unit tests for each fix (reproduced as failing tests first).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1. Fix potential KeyError in raise_dropbox_error_for_resp()
If the server returns a 400 with valid JSON that doesn't contain the 'error' key, accessing
es.json()['error'] raises an unhandled KeyError. Changed to use .get('error') to safely access the key.
Also widened the except clause to catch AttributeError alongside ValueError.
2. Replace eval() with safe string parsing
Using eval() to parse a version string from a file is unnecessary and fragile. Replaced with simple string stripping.