gmvault
gmvault copied to clipboard
Fix misbehaviour in store_oauth2_credentials
The previous implementation was both needlessly complicated, and also had a misbehaviour.
When writing new credentials to an already existing file, the file would not get correctly truncated. This caused some previous data to remain if the new data to be written was shorter than the current file contents.
It would then cause gmvault to fail with the following error upon the next invocation:
=== Exception traceback === Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/gmv/credential_utils.py", line 147, in read_oauth2_tok_sec oauth_result = json.load(oauth_file) File "/usr/lib64/python2.7/json/init.py", line 291, in load **kw) File "/usr/lib64/python2.7/json/init.py", line 339, in loads return _default_decoder.decode(s) File "/usr/lib64/python2.7/json/decoder.py", line 367, in decode raise ValueError(errmsg("Extra data", s, end, len(s))) ValueError: Extra data: line 1 column 225 - line 1 column 237 (char 224 - 236)
It would be nice if the master branch was kept relatively up to date, since it is what you ask people to fork when contributing. Back when I made this pull request in March, HEAD of master was at a75962355ed82f5b7baf1b47c5af8fe3edc04b59, but since then, a lot of fairly old commits were merged in, among them commits from August 2015 (72fd16fccbeaa4faa870474d0114df9758c9b96c, 72fd16fccbeaa4faa870474d0114df9758c9b96c, 09f98343ad706fd0641e0f51a616b42b27544b6d) that fixed the issue this pull request originally aimed to fix.
Anyway, I've rewritten this change against master again. While the current code isn't broken, the proposed change would make the code clearer and easier to maintain.